def test_multi_source(self): filter = [2, 3] args_a = tuple() kwargs_a = { 'count': 100, 'sids': [1, 2, 3], 'start': datetime(2012, 1, 3, 15, tzinfo=pytz.utc), 'delta': timedelta(minutes=6), 'filter': filter } source_a = SpecificEquityTrades(*args_a, **kwargs_a) args_b = tuple() kwargs_b = { 'count': 100, 'sids': [2, 3, 4], 'start': datetime(2012, 1, 3, 15, tzinfo=pytz.utc), 'delta': timedelta(minutes=5), 'filter': filter } source_b = SpecificEquityTrades(*args_b, **kwargs_b) all_events = list(chain(source_a, source_b)) # The expected output is all events, sorted by dt with # source_id as a tiebreaker. expected = sorted(all_events, comp) source_ids = [source_a.get_hash(), source_b.get_hash()] # Generating the events list consumes the sources. Rewind them # for testing. source_a.rewind() source_b.rewind() # Append a done message to each source. with_done_a = chain(source_a, [done_message(source_a.get_hash())]) with_done_b = chain(source_b, [done_message(source_b.get_hash())]) interleaved = alternate(with_done_a, with_done_b) # Test sort with alternating messages from source_a and # source_b. self.run_date_sort(interleaved, expected, source_ids) source_a.rewind() source_b.rewind() with_done_a = chain(source_a, [done_message(source_a.get_hash())]) with_done_b = chain(source_b, [done_message(source_b.get_hash())]) sequential = chain(with_done_a, with_done_b) # Test sort with all messages from a, followed by all messages # from b. self.run_date_sort(sequential, expected, source_ids)
def test_multi_source(self): filter = [2, 3] args_a = tuple() kwargs_a = { 'count': 100, 'sids': [1, 2, 3], 'start': datetime(2012, 1, 3, 15, tzinfo=pytz.utc), 'delta': timedelta(minutes=6), 'filter': filter } source_a = SpecificEquityTrades(*args_a, **kwargs_a) args_b = tuple() kwargs_b = { 'count': 100, 'sids': [2, 3, 4], 'start': datetime(2012, 1, 3, 15, tzinfo=pytz.utc), 'delta': timedelta(minutes=5), 'filter': filter } source_b = SpecificEquityTrades(*args_b, **kwargs_b) all_events = list(chain(source_a, source_b)) # The expected output is all events, sorted by dt with # source_id as a tiebreaker. expected = sorted(all_events, comp) source_ids = [source_a.get_hash(), source_b.get_hash()] # Generating the events list consumes the sources. Rewind them # for testing. source_a.rewind() source_b.rewind() # Append a done message to each source. with_done_a = chain(source_a, [done_message(source_a.get_hash())]) with_done_b = chain(source_b, [done_message(source_b.get_hash())]) interleaved = alternate(with_done_a, with_done_b) # Test sort with alternating messages from source_a and # source_b. self.run_date_sort(interleaved, expected, source_ids) source_a.rewind() source_b.rewind() with_done_a = chain(source_a, [done_message(source_a.get_hash())]) with_done_b = chain(source_b, [done_message(source_b.get_hash())]) sequential = chain(with_done_a, with_done_b) # Test sort with all messages from a, followed by all messages # from b. self.run_date_sort(sequential, expected, source_ids)
def test_single_source(self): # Just using the built-in defaults. See # zipline.sources.py source = SpecificEquityTrades() expected = list(source) source.rewind() # The raw source doesn't handle done messaging, so we need to # append a done message for sort to work properly. with_done = chain(source, [done_message(source.get_hash())]) self.run_date_sort(with_done, expected, [source.get_hash()])
def test_single_source(self): # Just using the built-in defaults. See # zipline.sources.py source = SpecificEquityTrades() expected = list(source) source.rewind() # The raw source doesn't handle done messaging, so we need to # append a done message for sort to work properly. with_done = chain(source, [done_message(source.get_hash())]) self.run_date_sort(with_done, expected, [source.get_hash()])
def add_done(stream_in): return chain(stream_in, [done_message('Composite')])