def assertEqualIgnoreOrder(self, one, two): """ Flattens data into a set and then compare. Elements compared should be one of: structure returned by parse_data_into_lists (expected data) or data from PageFetcher.all_data() (actual data) """ self.assertEqual( flatten_into_set(one), flatten_into_set(two) )
def test_query_isolation(self): """ Interleave some paged queries and make sure nothing bad happens. """ cursor = self.prepare() self.create_ks(cursor, 'test_paging_size', 2) cursor.execute("CREATE TABLE paging_test ( id int, mytext text, PRIMARY KEY (id, mytext) )") def random_txt(text): return unicode(uuid.uuid4()) data = """ | id | mytext | *5000| 1 | [random] | *5000| 2 | [random] | *5000| 3 | [random] | *5000| 4 | [random] | *5000| 5 | [random] | *5000| 6 | [random] | *5000| 7 | [random] | *5000| 8 | [random] | *5000| 9 | [random] | *5000| 10 | [random] | """ expected_data = create_rows(data, cursor, 'paging_test', cl=CL.ALL, format_funcs={'id': int, 'mytext': random_txt}) stmts = [ SimpleStatement("select * from paging_test where id in (1)", fetch_size=500, consistency_level=CL.ALL), SimpleStatement("select * from paging_test where id in (2)", fetch_size=600, consistency_level=CL.ALL), SimpleStatement("select * from paging_test where id in (3)", fetch_size=700, consistency_level=CL.ALL), SimpleStatement("select * from paging_test where id in (4)", fetch_size=800, consistency_level=CL.ALL), SimpleStatement("select * from paging_test where id in (5)", fetch_size=900, consistency_level=CL.ALL), SimpleStatement("select * from paging_test where id in (1)", fetch_size=1000, consistency_level=CL.ALL), SimpleStatement("select * from paging_test where id in (2)", fetch_size=1100, consistency_level=CL.ALL), SimpleStatement("select * from paging_test where id in (3)", fetch_size=1200, consistency_level=CL.ALL), SimpleStatement("select * from paging_test where id in (4)", fetch_size=1300, consistency_level=CL.ALL), SimpleStatement("select * from paging_test where id in (5)", fetch_size=1400, consistency_level=CL.ALL), SimpleStatement("select * from paging_test where id in (1,2,3,4,5,6,7,8,9,10)", fetch_size=1500, consistency_level=CL.ALL) ] page_fetchers = [] for stmt in stmts: future = cursor.execute_async(stmt) page_fetchers.append(PageFetcher(future)) # first page is auto-retrieved, so no need to request it for pf in page_fetchers: pf.request_one() for pf in page_fetchers: pf.request_one() for pf in page_fetchers: pf.request_all() self.assertEqual(page_fetchers[0].pagecount(), 10) self.assertEqual(page_fetchers[1].pagecount(), 9) self.assertEqual(page_fetchers[2].pagecount(), 8) self.assertEqual(page_fetchers[3].pagecount(), 7) self.assertEqual(page_fetchers[4].pagecount(), 6) self.assertEqual(page_fetchers[5].pagecount(), 5) self.assertEqual(page_fetchers[6].pagecount(), 5) self.assertEqual(page_fetchers[7].pagecount(), 5) self.assertEqual(page_fetchers[8].pagecount(), 4) self.assertEqual(page_fetchers[9].pagecount(), 4) self.assertEqual(page_fetchers[10].pagecount(), 34) self.assertEqualIgnoreOrder(flatten_into_set(page_fetchers[0].all_data()), flatten_into_set(expected_data[:5000])) self.assertEqualIgnoreOrder(flatten_into_set(page_fetchers[1].all_data()), flatten_into_set(expected_data[5000:10000])) self.assertEqualIgnoreOrder(flatten_into_set(page_fetchers[2].all_data()), flatten_into_set(expected_data[10000:15000])) self.assertEqualIgnoreOrder(flatten_into_set(page_fetchers[3].all_data()), flatten_into_set(expected_data[15000:20000])) self.assertEqualIgnoreOrder(flatten_into_set(page_fetchers[4].all_data()), flatten_into_set(expected_data[20000:25000])) self.assertEqualIgnoreOrder(flatten_into_set(page_fetchers[5].all_data()), flatten_into_set(expected_data[:5000])) self.assertEqualIgnoreOrder(flatten_into_set(page_fetchers[6].all_data()), flatten_into_set(expected_data[5000:10000])) self.assertEqualIgnoreOrder(flatten_into_set(page_fetchers[7].all_data()), flatten_into_set(expected_data[10000:15000])) self.assertEqualIgnoreOrder(flatten_into_set(page_fetchers[8].all_data()), flatten_into_set(expected_data[15000:20000])) self.assertEqualIgnoreOrder(flatten_into_set(page_fetchers[9].all_data()), flatten_into_set(expected_data[20000:25000])) self.assertEqualIgnoreOrder(flatten_into_set(page_fetchers[10].all_data()), flatten_into_set(expected_data[:50000]))
def assertIsSubsetOf(self, subset, superset): assert flatten_into_set(subset).issubset(flatten_into_set(superset))