def test_cassandra_rewrite(self): cassandra_host = os.getenv('CASSANDRA_HOST', 'localhost') cassandra_port = os.getenv('CASSANDRA_PORT', 9042) db = TSDB(STORAGE="cassandra", BUCKET_TYPE="daily", CASSANDRA_HOST=cassandra_host, CASSANDRA_PORT=cassandra_port) db.storage._dropTable() db.storage._createTable() for i in range(0, 300): db._insert("cass", [(i * 10 * 60, 1.1)]) res = db.storage.query("cass", 0, 4 * 24 * 60 * 60) self.assertEqual(len(res), 3) self.assertEqual(len(res[0]), 144) self.assertEqual(len(res[1]), 144) self.assertEqual(len(res[2]), 12) res = db._query("cass", 0, 4 * 24 * 60 * 60) self.assertEqual(len(res), 300) self.assertEqual(res[144][0], 24 * 60 * 60) self.assertAlmostEqual(res[144][1], 1.1, 4) for i in range(0, 300): db._insert("cass", [(i * 10 * 60, 2.2)]) res = db.storage.query("cass", 0, 4 * 24 * 60 * 60) self.assertEqual(len(res), 3) self.assertEqual(len(res[0]), 144) self.assertEqual(len(res[1]), 144) self.assertEqual(len(res[2]), 12) res = db._query("cass", 0, 4 * 24 * 60 * 60) self.assertEqual(len(res), 300) self.assertEqual(res[144][0], 24 * 60 * 60) self.assertAlmostEqual(res[144][1], 1.1, 4) for i in range(0, 300): db._insert("cass", [(i * 10 * 60 + 1, 2.2)]) res = db.storage.query("cass", 0, 4 * 24 * 60 * 60 + 1) self.assertEqual(len(res), 3) self.assertEqual(len(res[0]), 288) self.assertEqual(len(res[1]), 288) self.assertEqual(len(res[2]), 24) res = db._query("cass", 0, 4 * 24 * 60 * 60 + 1) self.assertEqual(len(res), 600) self.assertEqual(res[288][0], 24 * 60 * 60) self.assertAlmostEqual(res[288][1], 1.1, 4) self.assertEqual(res[289][0], 24 * 60 * 60 + 1) self.assertAlmostEqual(res[289][1], 2.2, 4)
def test_merge(self): d = TSDB(BUCKET_TYPE="dynamic", BUCKET_DYNAMIC_TARGET=2, BUCKET_DYNAMIC_MAX=2) d._insert("merge", [(1, 2.0), (2, 3.0), (5, 6.0), (6, 7.0), (9, 10.0), (0, 1.0)]) res = d._query("merge", 0, 10) self.assertEqual(len(res), 6) d._insert("merge", [(3, 4.0), (4, 5.0), (7, 8.0), (8, 9.0)]) buckets = d.storage.query("merge", 0, 10) self.assertEqual(len(buckets), 5) for b in buckets: self.assertEqual(len(b), 2) res = d._query("merge", 0, 10) self.assertEqual(len(res), 10) for ts, v in res.all(): self.assertAlmostEqual(float(ts + 1.0), v)
def test_largedataset(self): # Generate d = [] for i in range(50000): d.append((i, i * 2.5)) s = [] while len(d) > 0: count = random.randint(3, 30) s.append([]) for _ in range(count): if len(d) < 1: break el = d.pop(0) s[-1].append(el) # Make some holes s.insert(200, s.pop(100)) s.insert(200, s.pop(100)) s.insert(200, s.pop(100)) s.insert(1000, s.pop(1100)) s.insert(1200, s.pop(1300)) s.insert(1400, s.pop(1400)) # Strange Future Hole s.insert(2000, s.pop(1800)) # Insert d = TSDB(BUCKET_TYPE="dynamic", BUCKET_DYNAMIC_TARGET=100) for p in s: d._insert("large", p) buckets = d.storage.query("large", 0, 50000) self.assertGreater(len(buckets), 450) self.assertLess(len(buckets), 550) res = d._query("large", 1, 50000) self.assertEqual(len(res), 49999) res = d._query("large", 0, 49999) self.assertEqual(len(res), 50000)