Пример #1
0
def test_suite():
    suite = unittest.TestSuite()
    s1 = unittest.TestSuite(unittest.makeSuite(MonitoringIntegrationTest))
    s1.layer = CrateLayer('crate-enterprise',
                          crate_home=crate_path(),
                          port=MonitoringIntegrationTest.CRATE_HTTP_PORT,
                          transport_port=GLOBAL_PORT_POOL.get(),
                          env={
                              "CRATE_JAVA_OPTS":
                              JMX_OPTS.format(
                                  MonitoringIntegrationTest.JMX_PORT)
                          },
                          settings={
                              'stats.enabled': True,
                              'license.enterprise': True
                          })
    suite.addTest(s1)

    s2 = unittest.TestSuite(
        unittest.makeSuite(MonitoringSettingIntegrationTest))
    s2.layer = CrateLayer('crate',
                          crate_home=crate_path(),
                          port=GLOBAL_PORT_POOL.get(),
                          transport_port=GLOBAL_PORT_POOL.get(),
                          env={
                              "CRATE_JAVA_OPTS":
                              JMX_OPTS.format(
                                  MonitoringSettingIntegrationTest.JMX_PORT)
                          },
                          settings={
                              'stats.enabled': True,
                              'license.enterprise': False
                          })
    suite.addTest(s2)
    return suite
Пример #2
0
def test_suite():
    env = os.environ.copy()
    env['CRATE_JAVA_OPTS'] = JMX_OPTS.format(JMX_PORT)
    crateLayer = CrateLayer(
        'crate-enterprise',
        crate_home=crate_path(),
        port=CRATE_HTTP_PORT,
        transport_port=GLOBAL_PORT_POOL.get(),
        env=env,
        settings={
            'license.enterprise': True,
            'psql.port': GLOBAL_PORT_POOL.get(),
        }
    )

    # Graceful tests
    suite = unittest.TestSuite()
    s = unittest.TestSuite(unittest.makeSuite(MonitoringIntegrationTest))
    s.layer = crateLayer
    suite.addTest(s)

    s = unittest.TestSuite(unittest.makeSuite(MonitoringNodeStatusIntegrationTest))
    s.layer = crateLayer
    suite.addTest(s)

    s = unittest.TestSuite(unittest.makeSuite(MonitoringNodeInfoIntegrationTest))
    s.layer = s.layer = crateLayer
    suite.addTest(s)

    s = unittest.makeSuite(ConnectionsBeanTest)
    s.layer = crateLayer
    suite.addTest(s)

    s = unittest.makeSuite(ThreadPoolsBeanTest)
    s.layer = crateLayer
    suite.addTest(s)

    s = unittest.makeSuite(CircuitBreakersBeanTest)
    s.layer = crateLayer
    suite.addTest(s)

    # JMX Disabled test
    s = unittest.TestSuite(unittest.makeSuite(MonitoringSettingIntegrationTest))
    env = os.environ.copy()
    env["CRATE_JAVA_OPTS"] = JMX_OPTS.format(JMX_PORT_ENTERPRISE_DISABLED)
    s.layer = CrateLayer(
        'crate',
        crate_home=crate_path(),
        port=GLOBAL_PORT_POOL.get(),
        transport_port=GLOBAL_PORT_POOL.get(),
        env=env,
        settings={
            'license.enterprise': False,
        }
    )
    suite.addTest(s)
    return suite
Пример #3
0
def test_suite():
    crateLayer = CrateLayer(
        'crate-enterprise',
        crate_home=crate_path(),
        port=CRATE_HTTP_PORT,
        transport_port=GLOBAL_PORT_POOL.get(),
        env={
            "CRATE_JAVA_OPTS":
                JMX_OPTS.format(JMX_PORT)
        },
        settings={
            'license.enterprise': True,
            # The disk.watermark settings can be removed once crate-python > 0.21.1 has been released
            "cluster.routing.allocation.disk.watermark.low" : "100k",
            "cluster.routing.allocation.disk.watermark.high" : "10k",
            "cluster.routing.allocation.disk.watermark.flood_stage" : "1k",
        }
    )

    # Graceful tests
    suite = unittest.TestSuite()
    s = unittest.TestSuite(unittest.makeSuite(MonitoringIntegrationTest))
    s.layer = crateLayer
    suite.addTest(s)


    s = unittest.TestSuite(unittest.makeSuite(MonitoringNodeStatusIntegrationTest))
    s.layer = crateLayer
    suite.addTest(s)

    s = unittest.TestSuite(unittest.makeSuite(MonitoringNodeInfoIntegrationTest))
    s.layer = s.layer = crateLayer
    suite.addTest(s)

    # JMX Disabled test
    s = unittest.TestSuite(unittest.makeSuite(MonitoringSettingIntegrationTest))
    s.layer = CrateLayer(
        'crate',
        crate_home=crate_path(),
        port=GLOBAL_PORT_POOL.get(),
        transport_port=GLOBAL_PORT_POOL.get(),
        env={
            "CRATE_JAVA_OPTS":
                JMX_OPTS.format(JMX_PORT_ENTERPRISE_DISABLED)
        },
        settings={
            'license.enterprise': False,
            # The disk.watermark settings can be removed once crate-python > 0.21.1 has been released
            "cluster.routing.allocation.disk.watermark.low" : "100k",
            "cluster.routing.allocation.disk.watermark.high" : "10k",
            "cluster.routing.allocation.disk.watermark.flood_stage" : "1k",
        }
    )
    suite.addTest(s)
    return suite
Пример #4
0
    def setUp(self):
        zone_file = '''
crate.internal.               600   IN   SOA   localhost localhost ( 2007120710 1d 2h 4w 1h )
crate.internal.               400   IN   NS    localhost
crate.internal.               600   IN   A     127.0.0.1'''

        transport_ports = [bind_port() for _ in range(self.num_nodes)]
        for port in transport_ports:
            zone_file += '''
_test._srv.crate.internal.    600   IN   SRV   1 10 {port} 127.0.0.1.'''.format(
                port=port)

        dns_port = bind_port()
        self.dns_server = DNSServer(ZoneResolver(zone_file), port=dns_port)
        self.dns_server.start_thread()

        self.nodes = nodes = []
        for i in range(self.num_nodes):
            settings = {
                'node.name': f'node-{i}',
                'cluster.name': 'crate-dns-discovery',
                'psql.port': 0,
                'transport.tcp.port': transport_ports[i],
                "discovery.seed_providers": "srv",
                "discovery.srv.query": "_test._srv.crate.internal.",
                "discovery.srv.resolver": "127.0.0.1:" + str(dns_port)
            }
            if i is 0:
                settings['cluster.initial_master_nodes'] = f'node-{i}'
            node = CrateNode(crate_dir=crate_path(),
                             version=(4, 0, 0),
                             settings=settings,
                             env={'CRATE_HEAP_SIZE': '256M'})
            node.start()
            nodes.append(node)
Пример #5
0
    def setUp(self):
        self.crates = []
        self.clients = []
        self.node_names = []
        # auto-discovery with unicast on the same host only works if all nodes are configured with the same port range
        transport_port_range = bind_range(range_size=self.num_servers)
        for i in range(self.num_servers):
            layer = GracefulStopCrateLayer(
                crate_dir=crate_path(),
                settings={
                    'cluster.name': self.__class__.__name__,
                    'node.name': self.node_name(i),
                    'transport.tcp.port': transport_port_range,
                },
                env={
                    **os.environ.copy(),
                    'CRATE_HEAP_SIZE': '256M'
                },
                version=(4, 0, 0)
            )
            layer.start()
            self.clients.append(Client(layer.http_url))
            self.crates.append(layer)
            self.node_names.append(self.node_name(i))

        client = self.random_client()
        num_nodes = 0

        # wait until all nodes joined the cluster
        while num_nodes < len(self.crates):
            response = client.sql("select * from sys.nodes")
            num_nodes = response.get("rowcount", 0)
            time.sleep(.5)
Пример #6
0
    def setUpClass(cls):
        # auto-discovery with unicast on the same host only works if all nodes are configured with the same port range
        transport_port_range = bind_range(range_size=cls.NUM_SERVERS)
        for i in range(cls.NUM_SERVERS):
            http_port = bind_port()
            layer = CrateLayer(
                cls.node_name(i),
                crate_path(),
                host='localhost',
                port=http_port,
                transport_port=transport_port_range,
                settings=CRATE_SETTINGS,
                env={'JAVA_HOME': os.environ.get('JAVA_HOME', '')},
                cluster_name=cls.__class__.__name__)
            layer.start()
            cls.HTTP_PORTS.append(http_port)
            cls.CRATES.append(layer)

        dsn = cls.random_dns()
        num_nodes = 0

        # wait until all nodes joined the cluster
        while num_nodes < len(cls.CRATES):
            with connect(dsn) as conn:
                c = conn.cursor()
                c.execute("select * from sys.nodes")
                num_nodes = len(c.fetchall())
                time.sleep(5)
Пример #7
0
    def setUp(self):
        self.crates = []
        self.clients = []
        self.node_names = []
        # auto-discovery with unicast on the same host only works if all nodes are configured with the same port range
        transport_port_range = bind_range(range_size=self.num_servers)
        for i in range(self.num_servers):
            layer = GracefulStopCrateLayer(
                self.node_name(i),
                crate_path(),
                host='localhost',
                port=bind_port(),
                transport_port=transport_port_range,
                settings={
                    # The disk.watermark settings can be removed once crate-python > 0.21.1 has been released
                    "cluster.routing.allocation.disk.watermark.low": "100k",
                    "cluster.routing.allocation.disk.watermark.high": "10k",
                    "cluster.routing.allocation.disk.watermark.flood_stage":
                    "1k",
                },
                env=os.environ.copy(),
                cluster_name=self.__class__.__name__)
            layer.start()
            self.clients.append(Client(layer.crate_servers))
            self.crates.append(layer)
            self.node_names.append(self.node_name(i))

        client = self.random_client()
        num_nodes = 0

        # wait until all nodes joined the cluster
        while num_nodes < len(self.crates):
            response = client.sql("select * from sys.nodes")
            num_nodes = response.get("rowcount", 0)
            time.sleep(.5)
Пример #8
0
def test_suite():
    suite = unittest.TestSuite(unittest.makeSuite(SigarIntegrationTest))
    suite.layer = CrateLayer('crate',
                             crate_home=crate_path(),
                             port=CRATE_HTTP_PORT,
                             transport_port=CRATE_TRANSPORT_PORT)
    return suite
Пример #9
0
    def setUpClass(cls):
        # auto-discovery with unicast on the same host only works if all nodes are configured with the same port range
        transport_port_range = bind_range(range_size=cls.NUM_SERVERS)
        for i in range(cls.NUM_SERVERS):
            layer = CrateNode(
                crate_dir=crate_path(),
                version=(4, 0, 0),
                settings={
                    'cluster.name': cls.__class__.__name__,
                    'node.name': cls.node_name(i),
                    'psql.port': 0,
                    'transport.tcp.port': transport_port_range,
                },
                env={
                    'JAVA_HOME': os.environ.get('JAVA_HOME', ''),
                    'CRATE_HEAP_SIZE': '256M'
                }
            )
            layer.start()
            cls.HTTP_PORTS.append(layer.addresses.http.port)
            cls.CRATES.append(layer)

        dsn = cls.random_dns()
        num_nodes = 0

        # wait until all nodes joined the cluster
        with connect(dsn) as conn:
            c = conn.cursor()
            while num_nodes < len(cls.CRATES):
                c.execute("select * from sys.nodes")
                num_nodes = len(c.fetchall())
                time.sleep(5)
Пример #10
0
 def __init__(self, *args, **kwargs):
     num_servers = kwargs.pop("num_servers", getattr(self, "NUM_SERVERS", self.DEFAULT_NUM_SERVERS))
     super(GracefulStopTest, self).__init__(*args, **kwargs)
     self.crates = []
     self.clients = []
     self.node_names = []
     # auto-discovery with unicast on the same host only works if all nodes are configured with the same port range
     transport_port_range = GLOBAL_PORT_POOL.get_range(range_size=num_servers)
     for i in range(num_servers):
         layer = GracefulStopCrateLayer(
             self.node_name(i),
             crate_path(),
             host='localhost',
             port=GLOBAL_PORT_POOL.get(),
             transport_port=transport_port_range,
             settings={
                 # The disk.watermark settings can be removed once crate-python > 0.21.1 has been released
                 "cluster.routing.allocation.disk.watermark.low": "100k",
                 "cluster.routing.allocation.disk.watermark.high": "10k",
                 "cluster.routing.allocation.disk.watermark.flood_stage": "1k",
             },
             cluster_name=self.__class__.__name__)
         client = Client(layer.crate_servers)
         self.crates.append(layer)
         self.clients.append(client)
         self.node_names.append(self.node_name(i))
     self.layer = CascadedLayer(
         "{0}_{1}_crates".format(self.__class__.__name__, num_servers),
         *self.crates
     )
Пример #11
0
 def __init__(self, *args, **kwargs):
     num_servers = kwargs.pop(
         "num_servers",
         getattr(self, "NUM_SERVERS", self.DEFAULT_NUM_SERVERS))
     super(GracefulStopTest, self).__init__(*args, **kwargs)
     self.crates = []
     self.clients = []
     self.node_names = []
     # auto-discovery with unicast on the same host only works if all nodes are configured with the same port range
     transport_port_range = GLOBAL_PORT_POOL.get_range(
         range_size=num_servers)
     for i in range(num_servers):
         layer = GracefulStopCrateLayer(
             self.node_name(i),
             crate_path(),
             host='localhost',
             port=GLOBAL_PORT_POOL.get(),
             transport_port=transport_port_range,
             cluster_name=self.__class__.__name__)
         client = Client(layer.crate_servers)
         self.crates.append(layer)
         self.clients.append(client)
         self.node_names.append(self.node_name(i))
     self.layer = CascadedLayer(
         "{0}_{1}_crates".format(self.__class__.__name__, num_servers),
         *self.crates)
Пример #12
0
    def setUp(self):
        self.crates = []
        self.clients = []
        self.node_names = []
        # auto-discovery with unicast on the same host only works if all nodes are configured with the same port range
        transport_port_range = bind_range(range_size=self.num_servers)
        for i in range(self.num_servers):
            layer = GracefulStopCrateLayer(
                crate_dir=crate_path(),
                settings={
                    'cluster.name': self.__class__.__name__,
                    'node.name': self.node_name(i),
                    'transport.tcp.port': transport_port_range,
                },
                env={
                    **os.environ.copy(),
                    'CRATE_HEAP_SIZE': '256M'
                },
                version=(4, 0, 0)
            )
            layer.start()
            self.clients.append(Client(layer.http_url))
            self.crates.append(layer)
            self.node_names.append(self.node_name(i))

        client = self.random_client()
        num_nodes = 0

        # wait until all nodes joined the cluster
        while num_nodes < len(self.crates):
            response = client.sql("select * from sys.nodes")
            num_nodes = response.get("rowcount", 0)
            time.sleep(.5)
Пример #13
0
def test_suite():
    suite = unittest.TestSuite()
    s = unittest.TestSuite(unittest.makeSuite(MonitoringIntegrationTest))
    s.layer = CrateLayer(
        'crate-enterprise',
        crate_home=crate_path(),
        port=MonitoringIntegrationTest.CRATE_HTTP_PORT,
        transport_port=GLOBAL_PORT_POOL.get(),
        env={
            "CRATE_JAVA_OPTS":
                JMX_OPTS.format(MonitoringIntegrationTest.JMX_PORT)
        },
        settings={
            'license.enterprise': True,
            # The disk.watermark settings can be removed once crate-python > 0.21.1 has been released
            "cluster.routing.allocation.disk.watermark.low" : "100k",
            "cluster.routing.allocation.disk.watermark.high" : "10k",
            "cluster.routing.allocation.disk.watermark.flood_stage" : "1k",
        }
    )
    suite.addTest(s)

    s = unittest.TestSuite(unittest.makeSuite(MonitoringNodeStatusIntegrationTest))
    suite.addTest(s)

    s = unittest.TestSuite(unittest.makeSuite(MonitoringSettingIntegrationTest))
    s.layer = CrateLayer(
        'crate',
        crate_home=crate_path(),
        port=GLOBAL_PORT_POOL.get(),
        transport_port=GLOBAL_PORT_POOL.get(),
        env={
            "CRATE_JAVA_OPTS":
                JMX_OPTS.format(MonitoringSettingIntegrationTest.JMX_PORT)
        },
        settings={
            'license.enterprise': False,
            # The disk.watermark settings can be removed once crate-python > 0.21.1 has been released
            "cluster.routing.allocation.disk.watermark.low" : "100k",
            "cluster.routing.allocation.disk.watermark.high" : "10k",
            "cluster.routing.allocation.disk.watermark.flood_stage" : "1k",
        }
    )
    suite.addTest(s)
    return suite
Пример #14
0
def test_suite():
    suite = unittest.TestSuite(unittest.makeSuite(HdfsIntegrationTest))
    crate_layer = HdfsCrateLayer('crate',
                                 crate_home=crate_path(),
                                 port=CRATE_HTTP_PORT,
                                 transport_port=CRATE_TRANSPORT_PORT)
    hadoop_layer = HadoopLayer()
    suite.layer = HadoopAndCrateLayer(crate_layer, hadoop_layer)
    return suite
Пример #15
0
def test_suite():
    suite = unittest.TestSuite(unittest.makeSuite(SigarIntegrationTest))
    suite.layer = CrateLayer(
        'crate',
        crate_home=crate_path(),
        port=CRATE_HTTP_PORT,
        transport_port=CRATE_TRANSPORT_PORT
    )
    return suite
Пример #16
0
def test_suite():
    suite = unittest.TestSuite(unittest.makeSuite(SqlLogicTest))
    crate_layer = CrateLayer('crate-sqllogic',
                             crate_home=crate_path(),
                             port=CRATE_HTTP_PORT,
                             transport_port=CRATE_TRANSPORT_PORT,
                             settings={'stats.enabled': True})
    suite.layer = crate_layer
    return suite
Пример #17
0
def test_suite():
    crateLayer = CrateLayer('crate-enterprise',
                            crate_home=crate_path(),
                            port=CRATE_HTTP_PORT,
                            transport_port=GLOBAL_PORT_POOL.get(),
                            env={"CRATE_JAVA_OPTS": JMX_OPTS.format(JMX_PORT)},
                            settings={'license.enterprise': True})

    # Graceful tests
    suite = unittest.TestSuite()
    s = unittest.TestSuite(unittest.makeSuite(MonitoringIntegrationTest))
    s.layer = crateLayer
    suite.addTest(s)

    s = unittest.TestSuite(
        unittest.makeSuite(MonitoringNodeStatusIntegrationTest))
    s.layer = crateLayer
    suite.addTest(s)

    s = unittest.TestSuite(
        unittest.makeSuite(MonitoringNodeInfoIntegrationTest))
    s.layer = s.layer = crateLayer
    suite.addTest(s)

    s = unittest.makeSuite(ConnectionsBeanTest)
    s.layer = crateLayer
    suite.addTest(s)

    # JMX Disabled test
    s = unittest.TestSuite(
        unittest.makeSuite(MonitoringSettingIntegrationTest))
    s.layer = CrateLayer(
        'crate',
        crate_home=crate_path(),
        port=GLOBAL_PORT_POOL.get(),
        transport_port=GLOBAL_PORT_POOL.get(),
        env={"CRATE_JAVA_OPTS": JMX_OPTS.format(JMX_PORT_ENTERPRISE_DISABLED)},
        settings={
            'license.enterprise': False,
        })
    suite.addTest(s)
    return suite
Пример #18
0
def test_suite():
    suite = unittest.TestSuite(unittest.makeSuite(HdfsIntegrationTest))
    crate_layer = HdfsCrateLayer(
        'crate',
        crate_home=crate_path(),
        port=CRATE_HTTP_PORT,
        transport_port=CRATE_TRANSPORT_PORT
    )
    hadoop_layer = HadoopLayer()
    suite.layer = HadoopAndCrateLayer(crate_layer, hadoop_layer)
    return suite
Пример #19
0
def main():
    num_nodes = 3

    node0_http_port = bind_port()
    dns_port = bind_port()
    transport_ports = []
    zone_file = '''
crate.internal.               600   IN   SOA   localhost localhost ( 2007120710 1d 2h 4w 1h )
crate.internal.               400   IN   NS    localhost
crate.internal.               600   IN   A     127.0.0.1'''

    for i in range(0, num_nodes):
        port = bind_port()
        transport_ports.append(port)
        zone_file += '''
_test._srv.crate.internal.    600   IN   SRV   1 10 {port} 127.0.0.1.'''.format(
            port=port)

    dns_server = DNSServer(ZoneResolver(zone_file), port=dns_port)
    dns_server.start_thread()

    crate_layers = []
    for i in range(0, num_nodes):
        crate_layer = CrateLayer(
            'node-' + str(i),
            cluster_name='crate-dns-discovery',
            crate_home=crate_path(),
            port=node0_http_port if i == 0 else bind_port(),
            transport_port=transport_ports[i],
            settings={
                'psql.port': bind_port(),
                "discovery.zen.hosts_provider": "srv",
                "discovery.srv.query": "_test._srv.crate.internal.",
                "discovery.srv.resolver": "127.0.0.1:" + str(dns_port)
            })
        crate_layers.append(crate_layer)
        crate_layer.start()

    try:
        conn = connect('localhost:{}'.format(node0_http_port))
        c = conn.cursor()
        c.execute('''select count() from sys.nodes''')
        result = c.fetchone()
        if result[0] != num_nodes:
            raise AssertionError(
                "Nodes could not join, expected number of nodes: " +
                str(num_nodes) + ", found: " + str(result[0]))

    finally:
        for crate_layer in crate_layers:
            crate_layer.stop()
        dns_server.stop()
Пример #20
0
def test_suite():
    crate_layer = HdfsCrateLayer(
        'crate',
        host='localhost',
        crate_home=crate_path(),
        port=CRATE_HTTP_PORT,
        transport_port=CRATE_TRANSPORT_PORT,
    )
    hadoop_layer = HadoopLayer()
    layer = HadoopAndCrateLayer(crate_layer, hadoop_layer)
    suite = unittest.makeSuite(HdfsIntegrationTest)
    suite.layer = layer
    return suite
Пример #21
0
def test_suite():
    suite = unittest.TestSuite(unittest.makeSuite(SqlLogicTest))
    crate_layer = CrateLayer(
        'crate-sqllogic',
        crate_home=crate_path(),
        port=CRATE_HTTP_PORT,
        transport_port=CRATE_TRANSPORT_PORT,
        settings={
            'stats.enabled': True,
            'psql.port': CRATE_PSQL_PORT
        }
    )
    suite.layer = crate_layer
    return suite
Пример #22
0
def test_suite():
    suite = unittest.TestSuite()
    s1 = unittest.TestSuite(unittest.makeSuite(MonitoringIntegrationTest))
    s1.layer = CrateLayer(
        'crate-enterprise',
        crate_home=crate_path(),
        port=MonitoringIntegrationTest.CRATE_HTTP_PORT,
        transport_port=GLOBAL_PORT_POOL.get(),
        env={
            "CRATE_JAVA_OPTS":
                JMX_OPTS.format(MonitoringIntegrationTest.JMX_PORT)
        },
        settings={
            'stats.enabled': True,
            'license.enterprise': True
        }
    )
    suite.addTest(s1)

    s2 = unittest.TestSuite(unittest.makeSuite(MonitoringSettingIntegrationTest))
    s2.layer = CrateLayer(
        'crate',
        crate_home=crate_path(),
        port=GLOBAL_PORT_POOL.get(),
        transport_port=GLOBAL_PORT_POOL.get(),
        env={
            "CRATE_JAVA_OPTS":
                JMX_OPTS.format(MonitoringSettingIntegrationTest.JMX_PORT)
        },
        settings={
            'stats.enabled': True,
            'license.enterprise': False
        }
    )
    suite.addTest(s2)
    return suite
Пример #23
0
def test_suite():
    crate_layer = HdfsCrateLayer(
        'crate',
        host='localhost',
        crate_home=crate_path(),
        port=CRATE_HTTP_PORT,
        transport_port=CRATE_TRANSPORT_PORT,
        settings={
            'psql.port': GLOBAL_PORT_POOL.get(),
        },
        env=os.environ.copy()
    )
    hadoop_layer = HadoopLayer()
    layer = HadoopAndCrateLayer(crate_layer, hadoop_layer)
    suite = unittest.makeSuite(HdfsIntegrationTest)
    suite.layer = layer
    return suite
Пример #24
0
def test_suite():
    suite = unittest.TestSuite(unittest.makeSuite(SqlLogicTest))
    crate_layer = CrateLayer(
        'crate-sqllogic',
        crate_home=crate_path(),
        port=CRATE_HTTP_PORT,
        transport_port=CRATE_TRANSPORT_PORT,
        settings={
            'psql.port': CRATE_PSQL_PORT,
            # The disk.watermark settings can be removed once crate-python > 0.21.1 has been released
            "cluster.routing.allocation.disk.watermark.low" : "100k",
            "cluster.routing.allocation.disk.watermark.high" : "10k",
            "cluster.routing.allocation.disk.watermark.flood_stage" : "1k",
        }
    )
    suite.layer = crate_layer
    return suite
Пример #25
0
def test_suite():
    crate_layer = HdfsCrateLayer(
        'crate',
        host='localhost',
        crate_home=crate_path(),
        port=CRATE_HTTP_PORT,
        transport_port=CRATE_TRANSPORT_PORT,
        settings={
            # The disk.watermark settings can be removed once crate-python > 0.21.1 has been released
            "cluster.routing.allocation.disk.watermark.low": "100k",
            "cluster.routing.allocation.disk.watermark.high": "10k",
            "cluster.routing.allocation.disk.watermark.flood_stage": "1k",
        })
    hadoop_layer = HadoopLayer()
    layer = HadoopAndCrateLayer(crate_layer, hadoop_layer)
    suite = unittest.makeSuite(HdfsIntegrationTest)
    suite.layer = layer
    return suite
Пример #26
0
def test_suite():
    crate_layer = HdfsCrateLayer(
        'crate',
        host='localhost',
        crate_home=crate_path(),
        port=CRATE_HTTP_PORT,
        transport_port=CRATE_TRANSPORT_PORT,
        settings={
            # The disk.watermark settings can be removed once crate-python > 0.21.1 has been released
            "cluster.routing.allocation.disk.watermark.low" : "100k",
            "cluster.routing.allocation.disk.watermark.high" : "10k",
            "cluster.routing.allocation.disk.watermark.flood_stage" : "1k",
        }
    )
    hadoop_layer = HadoopLayer()
    layer = HadoopAndCrateLayer(crate_layer, hadoop_layer)
    suite = unittest.makeSuite(HdfsIntegrationTest)
    suite.layer = layer
    return suite
Пример #27
0
def main():
    crate_layer = CrateLayer(
        'crate-sqllogic',
        crate_home=crate_path(),
        port=CRATE_HTTP_PORT,
        transport_port=CRATE_TRANSPORT_PORT,
        settings={
            'psql.port': CRATE_PSQL_PORT,
            # The disk.watermark settings can be removed once crate-python > 0.21.1 has been released
            "cluster.routing.allocation.disk.watermark.low": "100k",
            "cluster.routing.allocation.disk.watermark.high": "10k",
            "cluster.routing.allocation.disk.watermark.flood_stage": "1k",
        })
    crate_layer.start()
    logfiles = []
    try:
        with ProcessPoolExecutor() as executor:
            futures = []
            for i, filename in enumerate(tests_path.glob('**/*.test')):
                filepath = tests_path / filename
                relpath = str(filepath.relative_to(tests_path))
                if not any(p.match(str(relpath)) for p in FILE_WHITELIST):
                    continue

                logfile = f'sqllogic-{os.path.basename(relpath)}-{i}.log'
                logfiles.append(logfile)
                future = executor.submit(run_file,
                                         filename=str(filepath),
                                         host='localhost',
                                         port=str(CRATE_PSQL_PORT),
                                         log_level=logging.WARNING,
                                         log_file=logfile,
                                         failfast=True,
                                         schema=f'x{i}')
                futures.append(future)
            for future in as_completed(futures):
                future.result()
    finally:
        crate_layer.stop()
        # instead of having dozens file merge to one which is in gitignore
        merge_logfiles(logfiles)
Пример #28
0
 def __init__(self, *args, **kwargs):
     num_servers = kwargs.pop("num_servers", getattr(self, "NUM_SERVERS", self.DEFAULT_NUM_SERVERS))
     super(GracefulStopTest, self).__init__(*args, **kwargs)
     self.crates = []
     self.clients = []
     self.node_names = []
     for i in range(num_servers):
         layer = GracefulStopCrateLayer(
             self.node_name(i),
             crate_path(),
             port=GLOBAL_PORT_POOL.get(),
             transport_port=GLOBAL_PORT_POOL.get(),
             cluster_name=self.__class__.__name__)
         client = Client(layer.crate_servers)
         self.crates.append(layer)
         self.clients.append(client)
         self.node_names.append(self.node_name(i))
     self.layer = CascadedLayer(
         "{0}_{1}_crates".format(self.__class__.__name__, num_servers),
         *self.crates
     )
Пример #29
0
 def __init__(self, *args, **kwargs):
     num_servers = kwargs.pop(
         "num_servers",
         getattr(self, "NUM_SERVERS", self.DEFAULT_NUM_SERVERS))
     super(GracefulStopTest, self).__init__(*args, **kwargs)
     self.crates = []
     self.clients = []
     self.node_names = []
     for i in range(num_servers):
         layer = GracefulStopCrateLayer(
             self.node_name(i),
             crate_path(),
             port=GLOBAL_PORT_POOL.get(),
             transport_port=GLOBAL_PORT_POOL.get(),
             cluster_name=self.__class__.__name__)
         client = Client(layer.crate_servers)
         self.crates.append(layer)
         self.clients.append(client)
         self.node_names.append(self.node_name(i))
     self.layer = CascadedLayer(
         "{0}_{1}_crates".format(self.__class__.__name__, num_servers),
         *self.crates)
Пример #30
0
    def setUp(self):
        zone_file = '''
crate.internal.               600   IN   SOA   localhost localhost ( 2007120710 1d 2h 4w 1h )
crate.internal.               400   IN   NS    localhost
crate.internal.               600   IN   A     127.0.0.1'''

        transport_ports = [bind_port() for _ in range(self.num_nodes)]
        for port in transport_ports:
            zone_file += '''
_test._srv.crate.internal.    600   IN   SRV   1 10 {port} 127.0.0.1.'''.format(port=port)

        dns_port = bind_port()
        self.dns_server = DNSServer(ZoneResolver(zone_file), port=dns_port)
        self.dns_server.start_thread()

        self.nodes = nodes = []
        for i in range(self.num_nodes):
            settings = {
                         'node.name': f'node-{i}',
                         'cluster.name': 'crate-dns-discovery',
                         'psql.port': 0,
                         'transport.tcp.port': transport_ports[i],
                         "discovery.seed_providers": "srv",
                         "discovery.srv.query": "_test._srv.crate.internal.",
                         "discovery.srv.resolver": "127.0.0.1:" + str(dns_port)
                     }
            if i is 0:
                settings['cluster.initial_master_nodes'] = f'node-{i}'
            node = CrateNode(
                crate_dir=crate_path(),
                version=(4, 0, 0),
                settings=settings,
                env={
                    'CRATE_HEAP_SIZE': '256M'
                }
            )
            node.start()
            nodes.append(node)
Пример #31
0
 def __init__(self, *args, **kwargs):
     num_servers = kwargs.pop("num_servers", getattr(self, "NUM_SERVERS", self.DEFAULT_NUM_SERVERS))
     super(GracefulStopTest, self).__init__(*args, **kwargs)
     self.crates = []
     self.clients = []
     self.node_names = []
     # auto-discovery with unicast on the same host only works if all nodes are configured with the same port range
     transport_port_range = GLOBAL_PORT_POOL.get_range(range_size=num_servers)
     for i in range(num_servers):
         layer = GracefulStopCrateLayer(
             self.node_name(i),
             crate_path(),
             host='localhost',
             port=GLOBAL_PORT_POOL.get(),
             transport_port=transport_port_range,
             cluster_name=self.__class__.__name__)
         client = Client(layer.crate_servers)
         self.crates.append(layer)
         self.clients.append(client)
         self.node_names.append(self.node_name(i))
     self.layer = CascadedLayer(
         "{0}_{1}_crates".format(self.__class__.__name__, num_servers),
         *self.crates
     )
Пример #32
0
 def setUp(self):
     add_hadoop_libs(hdfs_repo_libs_path, crate_path())
     super(HdfsCrateLayer, self).setUp()
Пример #33
0
        kwargs.setdefault('settings', {})
        self.repo_path = kwargs['settings']['path.repo'] = tempfile.mkdtemp()
        super().__init__(*args, **kwargs)

    def start(self):
        super().start()
        cmd._connect(self.http_url)

    def stop(self):
        print('')
        print('ConnectingCrateLayer.stop()')
        shutil.rmtree(self.repo_path, ignore_errors=True)
        super().stop()


crate = ConnectingCrateLayer(crate_dir=crate_path(),
                             env={
                                 'JAVA_HOME':
                                 os.environ.get('JAVA_HOME', ''),
                                 'CRATE_JAVA_OPTS':
                                 '-Dio.netty.leakDetection.level=paranoid',
                             },
                             settings=CRATE_SETTINGS,
                             version=(4, 0, 0))


def crash_transform(s):
    # The examples in the docs show the real port '4200' to a reader.
    # Our test suite requires the port to be '44200' to avoid conflicts.
    # Therefore, we need to replace the ports before a test is being run.
    if s.startswith('_'):
Пример #34
0
import platform
import shutil
import tempfile
import threading
import unittest
import socket
import json
from pathlib import Path
from crate.client import connect
from cr8.run_crate import CrateNode, wait_until
from subprocess import Popen, PIPE, DEVNULL
from testutils.paths import crate_path
from urllib.request import urlretrieve
from minio import Minio

crate_node = CrateNode(crate_dir=crate_path(),
                       settings={
                           'transport.tcp.port': 0,
                           'psql.port': 0,
                       },
                       env={'CRATE_HEAP_SIZE': '256M'},
                       version=(4, 0, 0))


def _is_up(host: str, port: int) -> bool:
    try:
        conn = socket.create_connection((host, port))
        conn.close()
        return True
    except (socket.gaierror, ConnectionRefusedError):
        return False
Пример #35
0
from subprocess import PIPE, Popen
from urllib.request import urlretrieve

JMX_PORT = bind_port()
JMX_OPTS = '''
     -Dcom.sun.management.jmxremote
     -Dcom.sun.management.jmxremote.port={}
     -Dcom.sun.management.jmxremote.ssl=false
     -Dcom.sun.management.jmxremote.authenticate=false
     -Dio.netty.leakDetection.level=paranoid
'''

env = os.environ.copy()
env['CRATE_JAVA_OPTS'] = JMX_OPTS.format(JMX_PORT)
env['CRATE_HEAP_SIZE'] = '256M'
enterprise_crate = CrateNode(crate_dir=crate_path(),
                             settings={
                                 'transport.tcp.port': 0,
                                 'psql.port': 0,
                                 'node.name': 'crate-enterprise',
                             },
                             env=env,
                             version=(4, 0, 0))


class JmxClient:

    SJK_JAR_URL = "https://repository.sonatype.org/service/local/artifact/maven/redirect?r=central-proxy&g=org.gridkit.jvmtool&a=sjk&v=LATEST"

    CACHE_DIR = os.environ.get(
        'XDG_CACHE_HOME',
Пример #36
0
 def start(self):
     add_hadoop_libs(hdfs_repo_libs_path, crate_path())
     super().start()
Пример #37
0
        if returncode is not None:
            raise SystemError('Failed to start server rc={0} cmd={1}'.format(
                returncode, self.start_cmd))
        self._wait_for_start()
        self._wait_for_master()

        cmd._connect(self.crate_servers[0])

    def tearDown(self):
        shutil.rmtree(self.repo_path, ignore_errors=True)
        super(ConnectingCrateLayer, self).tearDown()


crate_layer = ConnectingCrateLayer(
    'crate',
    crate_home=crate_path(),
    port=CRATE_HTTP_PORT,
    transport_port=CRATE_TRANSPORT_PORT,
    settings={
        'cluster.routing.schedule': '30ms',
    }
)


def setUpLocations(test):
    test.globs['cmd'] = cmd
    cmd.stmt("""
        create table locations (
          id string primary key,
          name string,
          "date" timestamp,
Пример #38
0
from cr8.run_crate import CrateNode
from test_jmx import JmxClient

JMX_PORT = bind_port()
JMX_OPTS = '''
     -Dcom.sun.management.jmxremote
     -Dcom.sun.management.jmxremote.port={}
     -Dcom.sun.management.jmxremote.ssl=false
     -Dcom.sun.management.jmxremote.authenticate=false
'''


env = os.environ.copy()
env['CRATE_JAVA_OPTS'] = JMX_OPTS.format(JMX_PORT)
crate_layer = CrateNode(
    crate_dir=crate_path(),
    version=(4, 0, 0),
    settings={
        'transport.tcp.port': 0,
        'node.name': 'crate-ce',
    },
    env=env
)


class CeHasNoEnterpriseModulesITest(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        crate_layer.start()
Пример #39
0
def create_doctest_suite():
    crate_layer = ConnectingCrateLayer(
        'crate',
        host='localhost',
        crate_home=crate_path(),
        port=CRATE_HTTP_PORT,
        transport_port=CRATE_TRANSPORT_PORT,
        env={'JAVA_HOME': os.environ.get('JAVA_HOME', '')},
        settings={
            # The disk.watermark settings can be removed once crate-python > 0.21.1 has been released
            'cluster.routing.allocation.disk.watermark.low': '100k',
            'cluster.routing.allocation.disk.watermark.high': '10k',
            'cluster.routing.allocation.disk.watermark.flood_stage': '1k',
            'license.enterprise': 'true',
            'lang.js.enabled': 'true',
            'es.api.enabled': 'true',
        })
    tests = []

    for fn in doctest_files(
            'general/blobs.rst',
            'interfaces/http.rst',
    ):
        s = docsuite(fn, parser=bash_parser, setUp=setUpLocations)
        s.layer = crate_layer
        tests.append(s)

    for fn in doctest_files(
            'general/ddl/create-table.rst',
            'general/ddl/generated-columns.rst', 'general/ddl/constraints.rst',
            'general/ddl/sharding.rst', 'general/ddl/replication.rst',
            'general/ddl/column-policy.rst', 'general/ddl/system-columns.rst',
            'general/ddl/alter-table.rst', 'general/ddl/storage.rst',
            'general/ddl/fulltext-indices.rst', 'admin/runtime-config.rst',
            'general/ddl/show-create-table.rst',
            'general/user-defined-functions.rst', 'admin/user-management.rst',
            'admin/snapshots.rst', 'admin/privileges.rst',
            'admin/ingestion/rules.rst', 'general/dql/index.rst',
            'general/dql/refresh.rst', 'admin/optimization.rst',
            'general/dql/fulltext.rst', 'general/ddl/data-types.rst',
            'general/occ.rst', 'general/information-schema.rst',
            'general/ddl/partitioned-tables.rst',
            'general/builtins/aggregation.rst',
            'general/builtins/arithmetic.rst', 'general/builtins/scalar.rst',
            'general/builtins/table-functions.rst',
            'admin/system-information.rst', 'general/dql/selects.rst',
            'interfaces/postgres.rst', 'general/ddl/views.rst'):
        s = docsuite(fn, setUp=setUpLocationsAndQuotes)
        s.layer = crate_layer
        tests.append(s)

    for fn in doctest_files('general/dql/geo.rst', ):
        s = docsuite(fn, setUp=setUpCountries)
        s.layer = crate_layer
        tests.append(s)

    for fn in doctest_files(
            'general/dql/joins.rst',
            'general/builtins/subquery-expressions.rst',
    ):
        s = docsuite(fn, setUp=setUpEmpDeptAndColourArticlesAndGeo)
        s.layer = crate_layer
        tests.append(s)

    for fn in doctest_files('general/dml.rst', ):
        s = docsuite(fn, setUp=setUpLocationsQuotesAndUserVisits)
        s.layer = crate_layer
        tests.append(s)

    for fn in doctest_files('general/dql/union.rst', ):
        s = docsuite(fn, setUp=setUpPhotosAndCountries)
        s.layer = crate_layer
        tests.append(s)

    # randomize order of tests to make sure they don't depend on each other
    random.shuffle(tests)

    suite = unittest.TestSuite()
    suite.addTests(tests)
    return suite
Пример #40
0
 def start(self):
     add_hadoop_libs(hdfs_repo_libs_path, crate_path())
     super().start()
Пример #41
0
        self.repo_path = kwargs['settings']['path.repo'] = tempfile.mkdtemp()
        super().__init__(*args, **kwargs)

    def start(self):
        super().start()
        cmd._connect(self.http_url)

    def stop(self):
        print('')
        print('ConnectingCrateLayer.stop()')
        shutil.rmtree(self.repo_path, ignore_errors=True)
        super().stop()


crate = ConnectingCrateLayer(
    crate_dir=crate_path(),
    env={'JAVA_HOME': os.environ.get('JAVA_HOME', '')},
    settings=CRATE_SETTINGS,
    version=(4, 0, 0))


def crash_transform(s):
    # The examples in the docs show the real port '4200' to a reader.
    # Our test suite requires the port to be '44200' to avoid conflicts.
    # Therefore, we need to replace the ports before a test is being run.
    if s.startswith('_'):
        return s[1:]
    if hasattr(crate, 'addresses'):
        s = s.replace(':4200', ':{0}'.format(crate.addresses.http.port))
    return u'cmd.process({0})'.format(repr(s.strip().rstrip(';')))
Пример #42
0
doctest_file = partial(os.path.join, 'docs')


def doctest_files(*items):
    return (doctest_file(item) for item in items)


def get_abspath(name):
    return os.path.abspath(
        os.path.join(os.path.dirname(__file__), 'testdata', name))


crate_layer = ConnectingCrateLayer(
    'crate',
    host='localhost',
    crate_home=crate_path(),
    port=CRATE_HTTP_PORT,
    transport_port=0,
    env={'JAVA_HOME': os.environ.get('JAVA_HOME', '')},
    settings={
        'license.enterprise': 'true',
        'lang.js.enabled': 'true',
        'psql.port': 0,
    })


class DocTests(unittest.TestSuite):
    def run(self, result, debug=False):
        crate_layer.start()
        try:
            super().run(result, debug)
Пример #43
0
def create_doctest_suite():
    crate_layer = ConnectingCrateLayer(
        'crate',
        host='localhost',
        crate_home=crate_path(),
        port=CRATE_HTTP_PORT,
        transport_port=CRATE_TRANSPORT_PORT,
        env={'JAVA_HOME': os.environ.get('JAVA_HOME', '')},
        settings={
             # The disk.watermark settings can be removed once crate-python > 0.21.1 has been released
            'cluster.routing.allocation.disk.watermark.low': '100k',
            'cluster.routing.allocation.disk.watermark.high': '10k',
            'cluster.routing.allocation.disk.watermark.flood_stage': '1k',
            'license.enterprise': 'true',
            'lang.js.enabled': 'true',
            'es.api.enabled': 'true',
        }
    )
    tests = []

    for fn in doctest_files('general/blobs.rst',
                            'interfaces/http.rst',):
        s = docsuite(fn, parser=bash_parser, setUp=setUpLocations)
        s.layer = crate_layer
        tests.append(s)

    for fn in doctest_files('general/ddl/create-table.rst',
                            'general/ddl/generated-columns.rst',
                            'general/ddl/constraints.rst',
                            'general/ddl/sharding.rst',
                            'general/ddl/replication.rst',
                            'general/ddl/column-policy.rst',
                            'general/ddl/system-columns.rst',
                            'general/ddl/alter-table.rst',
                            'general/ddl/storage.rst',
                            'general/ddl/fulltext-indices.rst',
                            'admin/runtime-config.rst',
                            'general/ddl/show-create-table.rst',
                            'general/user-defined-functions.rst',
                            'admin/user-management.rst',
                            'admin/snapshots.rst',
                            'admin/privileges.rst',
                            'admin/ingestion/rules.rst',
                            'general/dql/index.rst',
                            'general/dql/refresh.rst',
                            'admin/optimization.rst',
                            'general/dql/fulltext.rst',
                            'general/ddl/data-types.rst',
                            'general/occ.rst',
                            'general/information-schema.rst',
                            'general/ddl/partitioned-tables.rst',
                            'general/builtins/aggregation.rst',
                            'general/builtins/arithmetic.rst',
                            'general/builtins/scalar.rst',
                            'general/builtins/table-functions.rst',
                            'admin/system-information.rst',
                            'general/dql/selects.rst',
                            'interfaces/postgres.rst',
                            'general/ddl/views.rst'):
        s = docsuite(fn, setUp=setUpLocationsAndQuotes)
        s.layer = crate_layer
        tests.append(s)

    for fn in doctest_files('general/dql/geo.rst',):
        s = docsuite(fn, setUp=setUpCountries)
        s.layer = crate_layer
        tests.append(s)

    for fn in doctest_files('general/dql/joins.rst',
                            'general/builtins/subquery-expressions.rst',):
        s = docsuite(fn, setUp=setUpEmpDeptAndColourArticlesAndGeo)
        s.layer = crate_layer
        tests.append(s)

    for fn in doctest_files('general/dml.rst',):
        s = docsuite(fn, setUp=setUpLocationsQuotesAndUserVisits)
        s.layer = crate_layer
        tests.append(s)

    for fn in doctest_files('general/dql/union.rst',):
        s = docsuite(fn, setUp=setUpPhotosAndCountries)
        s.layer = crate_layer
        tests.append(s)

    # randomize order of tests to make sure they don't depend on each other
    random.shuffle(tests)

    suite = unittest.TestSuite()
    suite.addTests(tests)
    return suite
Пример #44
0
 def setUp(self):
     add_hadoop_libs(hdfs_repo_libs_path, crate_path())
     super().setUp()
Пример #45
0
def create_doctest_suite():
    crate_layer = ConnectingCrateLayer(
        'crate',
        host='localhost',
        crate_home=crate_path(),
        port=CRATE_HTTP_PORT,
        transport_port=CRATE_TRANSPORT_PORT,
        env={'JAVA_HOME': os.environ.get('JAVA_HOME', '')},
        settings={
            'license.enterprise': 'true',
            'lang.js.enabled': 'true',
            'es.api.enabled': 'true',
            'psql.port': GLOBAL_PORT_POOL.get(),
        }
    )
    tests = []

    for fn in doctest_files('general/blobs.rst',
                            'interfaces/http.rst',):
        s = docsuite(fn, parser=bash_parser, setUp=setUpLocations, globs={
            'sh': partial(
                subprocess.run,
                stdin=subprocess.PIPE,
                stdout=subprocess.PIPE,
                stderr=subprocess.STDOUT,
                timeout=60,
                shell=True
            ),
            'pretty_print': pretty_print
        })
        s.layer = crate_layer
        tests.append(s)

    for fn in doctest_files('general/ddl/create-table.rst',
                            'general/ddl/generated-columns.rst',
                            'general/ddl/constraints.rst',
                            'general/ddl/sharding.rst',
                            'general/ddl/replication.rst',
                            'general/ddl/column-policy.rst',
                            'general/ddl/system-columns.rst',
                            'general/ddl/alter-table.rst',
                            'general/ddl/storage.rst',
                            'general/ddl/fulltext-indices.rst',
                            'admin/runtime-config.rst',
                            'general/ddl/show-create-table.rst',
                            'general/user-defined-functions.rst',
                            'admin/user-management.rst',
                            'admin/snapshots.rst',
                            'admin/privileges.rst',
                            'admin/ingestion/rules.rst',
                            'general/dql/index.rst',
                            'general/dql/refresh.rst',
                            'admin/optimization.rst',
                            'general/dql/fulltext.rst',
                            'general/ddl/data-types.rst',
                            'general/occ.rst',
                            'general/information-schema.rst',
                            'general/ddl/partitioned-tables.rst',
                            'general/builtins/aggregation.rst',
                            'general/builtins/arithmetic.rst',
                            'general/builtins/scalar.rst',
                            'general/builtins/table-functions.rst',
                            'admin/system-information.rst',
                            'general/dql/selects.rst',
                            'interfaces/postgres.rst',
                            'general/ddl/views.rst',
                            'sql/general/value-expressions.rst'):
        s = docsuite(fn, setUp=setUpLocationsAndQuotes)
        s.layer = crate_layer
        tests.append(s)

    for fn in doctest_files('general/dql/geo.rst',):
        s = docsuite(fn, setUp=setUpCountries)
        s.layer = crate_layer
        tests.append(s)

    for fn in doctest_files('general/dql/joins.rst',
                            'general/builtins/subquery-expressions.rst',
                            'general/builtins/window-functions.rst',):
        s = docsuite(fn, setUp=setUpEmpDeptAndColourArticlesAndGeo)
        s.layer = crate_layer
        tests.append(s)

    for fn in doctest_files('general/dml.rst',):
        s = docsuite(fn, setUp=setUpLocationsQuotesAndUserVisits)
        s.layer = crate_layer
        tests.append(s)

    for fn in doctest_files('general/dql/union.rst',):
        s = docsuite(fn, setUp=setUpPhotosAndCountries)
        s.layer = crate_layer
        tests.append(s)

    # randomize order of tests to make sure they don't depend on each other
    random.shuffle(tests)

    suite = unittest.TestSuite()
    suite.addTests(tests)
    return suite
Пример #46
0
 def setUp(self):
     add_hadoop_libs(hdfs_repo_libs_path, crate_path())
     super(HdfsCrateLayer, self).setUp()
Пример #47
0
    def __init__(self, **kwargs):
        super(CrateTestCmd, self).__init__(**kwargs)
        doctest_print = PrintWrapper()
        self.logger = ColorPrinter(False, stream=doctest_print, line_end='\n')

    def stmt(self, stmt):
        stmt = stmt.replace('\n', ' ')
        if stmt.startswith('\\'):
            self.process(stmt)
        else:
            self.execute(stmt)

cmd = CrateTestCmd(is_tty=False)
jars = [project_path('blackbox', 'tmp', 'crateClient', 'crate-client.jar')]
jars += glob.glob(crate_path('lib', '*.jar'))
java_repl = JavaRepl(
    jars=jars,
    port=GLOBAL_PORT_POOL.get()
)


def wait_for_schema_update(schema, table, column):
    conn = connect('localhost:' + str(CRATE_HTTP_PORT))
    c = conn.cursor()
    count = 0
    while count == 0:
        c.execute(('select count(*) from information_schema.columns '
                    'where schema_name = ? and table_name = ? '
                    'and column_name = ?'),
                    (schema, table, column))