Exemplo n.º 1
0
    def test_create_atomic_multilog(self):
        self.start_server()
        client = rpc_client.rpc_client("127.0.0.1", 9090)

        try:
            builder = schema_builder()
            multilog_schema = schema(
                builder.add_column(data_types.STRING_TYPE(8), "msg").build())
            client.create_atomic_multilog("my_multilog", multilog_schema,
                                          storage_id.IN_MEMORY)
        except:
            self.stop_server()
            raise

        client.disconnect()
        self.stop_server()
Exemplo n.º 2
0
    def test_read_write_durable_relaxed(self):
        self.start_server()
        client = rpc_client.rpc_client("127.0.0.1", 9090)

        try:
            builder = schema_builder()
            multilog_schema = schema(
                builder.add_column(data_types.STRING_TYPE(8), "msg").build())
            client.create_atomic_multilog("my_multilog", multilog_schema,
                                          storage_id.DURABLE_RELAXED)

            client.write(struct.pack("l", self.now_ns()) + "abcdefgh")
            buf = client.read(0)
            self.assertTrue(buf[8:] == "abcdefgh")
        except:
            self.stop_server()
            raise

        client.disconnect()
        self.stop_server()
Exemplo n.º 3
0
    def test_query_filter(self):

        self.start_server()
        client = rpc_client.rpc_client("127.0.0.1", 9090)

        try:
            multilog_schema = schema(self.build_schema())
            client.create_atomic_multilog("my_multilog", multilog_schema,
                                          storage_id.IN_MEMORY)

            client.add_filter("filter1", "a == true")
            client.add_filter("filter2", "b > 4")
            client.add_filter("filter3", "c <= 30")
            client.add_filter("filter4", "d == 0")
            client.add_filter("filter5", "e <= 100")
            client.add_filter("filter6", "f > 0.1")
            client.add_filter("filter7", "g < 0.06")
            client.add_filter("filter8", "h == zzz")
            client.add_aggregate("agg1", "filter1", "SUM(d)")
            client.add_aggregate("agg2", "filter2", "SUM(d)")
            client.add_aggregate("agg3", "filter3", "SUM(d)")
            client.add_aggregate("agg4", "filter4", "SUM(d)")
            client.add_aggregate("agg5", "filter5", "SUM(d)")
            client.add_aggregate("agg6", "filter6", "SUM(d)")
            client.add_aggregate("agg7", "filter7", "SUM(d)")
            client.add_aggregate("agg8", "filter8", "SUM(d)")
            client.install_trigger("trigger1", "agg1 >= 10")
            client.install_trigger("trigger2", "agg2 >= 10")
            client.install_trigger("trigger3", "agg3 >= 10")
            client.install_trigger("trigger4", "agg4 >= 10")
            client.install_trigger("trigger5", "agg5 >= 10")
            client.install_trigger("trigger6", "agg6 >= 10")
            client.install_trigger("trigger7", "agg7 >= 10")
            client.install_trigger("trigger8", "agg8 >= 10")

            now = self.now_ns()
            beg_ms = self.time_block(now)
            end_ms = self.time_block(now)
            client.write(
                self.pack_record_time(now, False, "0", 0, 0, 0, 0.0, 0.01,
                                      "abc"))
            client.write(
                self.pack_record_time(now, True, "1", 10, 2, 1, 0.1, 0.02,
                                      "defg"))
            client.write(
                self.pack_record_time(now, False, "2", 20, 4, 10, 0.2, 0.03,
                                      "hijkl"))
            client.write(
                self.pack_record_time(now, True, "3", 30, 6, 100, 0.3, 0.04,
                                      "mnopqr"))
            client.write(
                self.pack_record_time(now, False, "4", 40, 8, 1000, 0.4, 0.05,
                                      "stuvwx"))
            client.write(
                self.pack_record_time(now, True, "5", 50, 10, 10000, 0.5, 0.06,
                                      "yyy"))
            client.write(
                self.pack_record_time(now, False, "6", 60, 12, 100000, 0.6,
                                      0.07, "zzz"))
            client.write(
                self.pack_record_time(now, True, "7", 70, 14, 1000000, 0.7,
                                      0.08, "zzz"))

            i = 0
            for record in client.query_filter("filter1", beg_ms, end_ms):
                self.assertTrue(record.at(1).unpack() == True)
                i += 1
            self.assertTrue(i == 4)

            i = 0
            for record in client.query_filter("filter2", beg_ms, end_ms):
                self.assertTrue(record.at(2).unpack() > 4)
                i += 1
            self.assertTrue(i == 3)

            i = 0
            for record in client.query_filter("filter3", beg_ms, end_ms):
                self.assertTrue(record.at(3).unpack() <= 30)
                i += 1
            self.assertTrue(i == 4)

            i = 0
            for record in client.query_filter("filter4", beg_ms, end_ms):
                self.assertTrue(record.at(4).unpack() == 0)
                i += 1
            self.assertTrue(i == 1)

            i = 0
            for record in client.query_filter("filter5", beg_ms, end_ms):
                self.assertTrue(record.at(5).unpack() <= 100)
                i += 1
            self.assertTrue(i == 4)

            i = 0
            for record in client.query_filter("filter6", beg_ms, end_ms):
                self.assertTrue(record.at(6).unpack() > 0.1)
                i += 1
            self.assertTrue(i == 6)

            i = 0
            for record in client.query_filter("filter7", beg_ms, end_ms):
                self.assertTrue(record.at(7).unpack() < 0.06)
                i += 1
            self.assertTrue(i == 5)

            i = 0
            for record in client.query_filter("filter8", beg_ms, end_ms):
                self.assertTrue(record.at(8).unpack()[:3] == "zzz")
                i += 1
            self.assertTrue(i == 2)

            i = 0
            for record in client.query_filter("filter1", beg_ms, end_ms,
                                              "b > 4 || c <= 30"):
                self.assertTrue(record.at(1).unpack() == True)
                self.assertTrue(
                    record.at(2).unpack() > 4 or record.at(3).unpack() <= 30)
                i += 1
            self.assertTrue(i == 4)

            i = 0
            for record in client.query_filter("filter1", beg_ms, end_ms,
                                              "b > 4 || f > 0.1"):
                self.assertTrue(record.at(1).unpack() == True)
                self.assertTrue(
                    record.at(2).unpack() > 4 or record.at(6).unpack() > 0.1)
                i += 1
            self.assertTrue(i == 3)

            val1 = client.get_aggregate("agg1", beg_ms, end_ms)
            self.assertTrue("double(32.000000)" == val1)

            val2 = client.get_aggregate("agg2", beg_ms, end_ms)
            self.assertTrue("double(36.000000)" == val2)

            val3 = client.get_aggregate("agg3", beg_ms, end_ms)
            self.assertTrue("double(12.000000)" == val3)

            val4 = client.get_aggregate("agg4", beg_ms, end_ms)
            self.assertTrue("double(0.000000)" == val4)

            val5 = client.get_aggregate("agg5", beg_ms, end_ms)
            self.assertTrue("double(12.000000)" == val5)

            val6 = client.get_aggregate("agg6", beg_ms, end_ms)
            self.assertTrue("double(54.000000)" == val6)

            val7 = client.get_aggregate("agg7", beg_ms, end_ms)
            self.assertTrue("double(20.000000)" == val7)

            val8 = client.get_aggregate("agg8", beg_ms, end_ms)
            self.assertTrue("double(26.000000)" == val8)

        except:
            self.stop_server()
            raise

        client.disconnect()
        self.stop_server()
Exemplo n.º 4
0
    def test_execute_filter(self):

        self.start_server()
        client = rpc_client.rpc_client("127.0.0.1", 9090)

        try:
            multilog_schema = schema(self.build_schema())
            client.create_atomic_multilog("my_multilog", multilog_schema,
                                          storage_id.IN_MEMORY)

            client.add_index("a", 1)
            client.add_index("b", 1)
            client.add_index("c", 10)
            client.add_index("d", 2)
            client.add_index("e", 100)
            client.add_index("f", 0.1)
            client.add_index("g", 0.01)
            client.add_index("h", 1)

            client.write(
                self.pack_record(False, "0", 0, 0, 0, 0.0, 0.01, "abc"))
            client.write(
                self.pack_record(True, "1", 10, 2, 1, 0.1, 0.02, "defg"))
            client.write(
                self.pack_record(False, "2", 20, 4, 10, 0.2, 0.03, "hijkl"))
            client.write(
                self.pack_record(True, "3", 30, 6, 100, 0.3, 0.04, "mnopqr"))
            client.write(
                self.pack_record(False, "4", 40, 8, 1000, 0.4, 0.05, "stuvwx"))
            client.write(
                self.pack_record(True, "5", 50, 10, 10000, 0.5, 0.06, "yyy"))
            client.write(
                self.pack_record(False, "6", 60, 12, 100000, 0.6, 0.07, "zzz"))
            client.write(
                self.pack_record(True, "7", 70, 14, 1000000, 0.7, 0.08, "zzz"))

            i = 0
            for record in client.execute_filter("a == true"):
                self.assertTrue(record.at(1).unpack() == True)
                i += 1
            self.assertTrue(i == 4)

            i = 0
            for record in client.execute_filter("b > 4"):
                self.assertTrue(record.at(2).unpack() > 4)
                i += 1
            self.assertTrue(i == 3)

            i = 0
            for record in client.execute_filter("c <= 30"):
                self.assertTrue(record.at(3).unpack() <= 30)
                i += 1
            self.assertTrue(i == 4)

            i = 0
            for record in client.execute_filter("d == 0"):
                self.assertTrue(record.at(4).unpack() == 0)
                i += 1
            self.assertTrue(i == 1)

            i = 0
            for record in client.execute_filter("e <= 100"):
                self.assertTrue(record.at(5).unpack() <= 100)
                i += 1
            self.assertTrue(i == 4)

            i = 0
            for record in client.execute_filter("f > 0.1"):
                self.assertTrue(record.at(6).unpack() > 0.1)
                i += 1
            self.assertTrue(i == 6)

            i = 0
            for record in client.execute_filter("g < 0.06"):
                self.assertTrue(record.at(7).unpack() < 0.06)
                i += 1
            self.assertTrue(i == 5)

            i = 0
            for record in client.execute_filter("h == zzz"):
                self.assertTrue(record.at(8).unpack()[:3] == "zzz")
                i += 1
            self.assertTrue(i == 2)

            i = 0
            for record in client.execute_filter("a == true && b > 4"):
                self.assertTrue(record.at(1).unpack() == True)
                self.assertTrue(record.at(2).unpack() > 4)
                i += 1
            self.assertTrue(i == 2)

            i = 0
            for record in client.execute_filter(
                    "a == true && (b > 4 || c <= 30)"):
                self.assertTrue(record.at(1).unpack() == True)
                self.assertTrue(
                    record.at(2).unpack() > 4 or record.at(3).unpack() <= 30)
                i += 1
            self.assertTrue(i == 4)

            i = 0
            for record in client.execute_filter(
                    "a == true && (b > 4 || f > 0.1)"):
                self.assertTrue(record.at(1).unpack() == True)
                self.assertTrue(
                    record.at(2).unpack() > 4 or record.at(6).unpack() > 0.1)
                i += 1
            self.assertTrue(i == 3)
        except:
            self.stop_server()
            raise

        client.disconnect()
        self.stop_server()