def test_get_raw_content(self): """ Test getting raw feed content """ self.populate_db_with_documents(3) feed = Feed(self.db, raw_data=True) raw_content = list() for raw_line in feed: self.assertIsInstance(raw_line, BYTETYPE) raw_content.append(raw_line) changes = json.loads(''.join([unicode_(x) for x in raw_content])) if self.is_couchdb_1x_version() is True: self.assertSetEqual(set(changes.keys()), set(['results', 'last_seq'])) else: self.assertSetEqual(set(changes.keys()), set(['results', 'last_seq', 'pending'])) results = list() for result in changes['results']: self.assertSetEqual(set(result.keys()), set(['seq', 'changes', 'id'])) results.append(result) expected = set(['julia000', 'julia001', 'julia002']) self.assertSetEqual(set([x['id'] for x in results]), expected) self.assertTrue(str(changes['last_seq']).startswith('3')) self.assertIsNone(feed.last_seq)
def test_get_raw_content(self): """ Test getting raw feed content """ self.populate_db_with_documents(3) feed = Feed(self.db, raw_data=True) raw_content = list() for raw_line in feed: self.assertIsInstance(raw_line, BYTETYPE) raw_content.append(raw_line) changes = json.loads(''.join([unicode_(x) for x in raw_content])) if self.cloudant_test: self.assertSetEqual( set(changes.keys()), set(['results', 'last_seq', 'pending'])) else: self.assertSetEqual( set(changes.keys()), set(['results', 'last_seq'])) results = list() for result in changes['results']: self.assertSetEqual(set(result.keys()), set(['seq', 'changes', 'id'])) results.append(result) expected = set(['julia000', 'julia001', 'julia002']) self.assertSetEqual(set([x['id'] for x in results]), expected) self.assertTrue(str(changes['last_seq']).startswith('3')) self.assertIsNone(feed.last_seq)
def test_get_raw_content(self): """ Test getting raw feed content """ feed = Feed(self.client, raw_data=True, feed='continuous', timeout=100) raw_content = list() for raw_line in feed: self.assertIsInstance(raw_line, BYTETYPE) raw_content.append(raw_line) if len(raw_content) == 3: feed.stop() changes = [json.loads(unicode_(x)) for x in raw_content] self.assert_changes_in_db_updates_feed(changes)
def test_get_raw_content(self): """ Test getting raw feed content """ self.create_dbs(3) feed = Feed(self.client, limit=3, raw_data=True) raw_content = list() for raw_line in feed: self.assertIsInstance(raw_line, BYTETYPE) raw_content.append(raw_line) changes = json.loads(''.join([unicode_(x) for x in raw_content])) self.assertSetEqual(set(changes.keys()), set(['results', 'last_seq'])) self.assertEqual(len(changes['results']), 3) self.assertIsNotNone(changes['last_seq']) self.assertIsNone(feed.last_seq)
def test_get_raw_feed_with_heartbeat(self): """ Test getting raw content back for a feed with a heartbeat """ self.populate_db_with_documents() feed = Feed(self.db, raw_data=True, feed='continuous', heartbeat=10) raw_content = list() heartbeats = 0 for raw_line in feed: if not raw_line: self.assertEqual(len(raw_line), 0) heartbeats += 1 else: self.assertIsInstance(raw_line, BYTETYPE) raw_content.append(raw_line) if heartbeats == 3: feed.stop() changes = [json.loads(unicode_(x)) for x in raw_content] expected = set(['julia{0:03d}'.format(i) for i in range(100)]) self.assertSetEqual(set([x['id'] for x in changes]), expected) self.assertIsNone(feed.last_seq)
def test_get_raw_content(self): """ Test getting raw feed content """ feed = Feed(self.client, raw_data='True', feed='continuous', timeout=100) raw_content = list() for raw_line in feed: self.assertIsInstance(raw_line, BYTETYPE) if not raw_line: self.create_dbs(3) else: raw_content.append(raw_line) if len(raw_content) == 3: feed.stop() changes = [json.loads(unicode_(x)) for x in raw_content] self.assertDictEqual( changes[0], {'db_name': self.new_dbs[0].database_name, 'type': 'created'}) self.assertDictEqual( changes[1], {'db_name': self.new_dbs[1].database_name, 'type': 'created'}) self.assertDictEqual( changes[2], {'db_name': self.new_dbs[2].database_name, 'type': 'created'})
def test_get_raw_feed_with_heartbeat(self): """ Test getting raw content back for a feed with a heartbeat """ feed = Feed(self.client, raw_data=True, feed='continuous', since='now', heartbeat=1000) raw_content = list() heartbeats = 0 for raw_line in feed: if not raw_line: self.assertEqual(len(raw_line), 0) heartbeats += 1 if heartbeats < 4: self.create_dbs(1) else: self.assertIsInstance(raw_line, BYTETYPE) raw_content.append(raw_line) if heartbeats >= 3 and len(raw_content) >= 3: feed.stop() changes = [json.loads(unicode_(x)) for x in raw_content] self.assertTrue(changes[0]['seq'] < changes[1]['seq'] < changes[2]['seq']) self.assertIsNone(feed.last_seq)