[
https://issues.apache.org/jira/browse/BEAM-3377?focusedWorklogId=98572&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-98572
]
ASF GitHub Bot logged work on BEAM-3377:
----------------------------------------
Author: ASF GitHub Bot
Created on: 04/May/18 19:52
Start Date: 04/May/18 19:52
Worklog Time Spent: 10m
Work Description: aaltay commented on a change in pull request #5279:
[BEAM-3377] Call assert_that per window via reify_windows flag
URL: https://github.com/apache/beam/pull/5279#discussion_r186197949
##########
File path: sdks/python/apache_beam/testing/test_stream_test.py
##########
@@ -360,24 +352,17 @@ def process(self,
yield (elm, ts, side)
records = (main_stream # pylint: disable=unused-variable
- | beam.ParDo(RecordFn(), beam.pvalue.AsList(side))
- | beam.Map(recorded_elements))
+ | beam.ParDo(RecordFn(), beam.pvalue.AsList(side)))
p.run()
- # TODO(BEAM-3377): Remove after assert_that in streaming is fixed.
- self.assertEqual([('a', Timestamp(2), [2]),
- ('b', Timestamp(4), [4])], result)
+ assert_that(records, equal_to(
Review comment:
The `assert_that` modifies the graph. For it to actually work, it needs to
be above `p.run()`. Otherwise it will not be tested. In this you can see that
it should have failed if it was working, because it is checking for
element`'e'`, however the main elements are actually `'a', 'b'`.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
Issue Time Tracking
-------------------
Worklog Id: (was: 98572)
> assert_that not working for streaming
> -------------------------------------
>
> Key: BEAM-3377
> URL: https://issues.apache.org/jira/browse/BEAM-3377
> Project: Beam
> Issue Type: Bug
> Components: sdk-py-core
> Affects Versions: 2.2.0
> Reporter: MarĂa GH
> Priority: Major
> Labels: starter
> Time Spent: 20m
> Remaining Estimate: 0h
>
> assert_that does not work for AfterWatermark timers.
> Easy way to reproduce: modify test_gbk_execution [1] in this form:
>
> {code:java}
> def test_this(self):
> test_stream = (TestStream()
> .add_elements(['a', 'b', 'c'])
> .advance_watermark_to(20))
> def fnc(x):
> print 'fired_elem:', x
> return x
> options = PipelineOptions()
> options.view_as(StandardOptions).streaming = True
> p = TestPipeline(options=options)
> records = (p
> | test_stream
> | beam.WindowInto(
> FixedWindows(15),
>
> trigger=trigger.AfterWatermark(early=trigger.AfterCount(2)),
> accumulation_mode=trigger.AccumulationMode.ACCUMULATING)
> | beam.Map(lambda x: ('k', x))
> | beam.GroupByKey())
> assert_that(records, equal_to([
> ('k', ['a', 'b', 'c'])]))
> p.run()
> {code}
> This test will pass, but if the .advance_watermark_to(20) is removed, the
> test will fail. However, both cases fire the same elements:
> fired_elem: ('k', ['a', 'b', 'c'])
> fired_elem: ('k', ['a', 'b', 'c'])
> In the passing case, they correspond to the sorted_actual inside the
> assert_that. In the failing case:
> sorted_actual: [('k', ['a', 'b', 'c']), ('k', ['a', 'b', 'c'])]
> sorted_actual: []
> [1]
> https://github.com/mariapython/incubator-beam/blob/direct-timers-show/sdks/python/apache_beam/testing/test_stream_test.py#L120
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)