Skip to content

Commit 2d491ca

Browse files
committed
test.py: basic cluster tests working
1 parent 4ed4b66 commit 2d491ca

File tree

3 files changed

+27
-24
lines changed

3 files changed

+27
-24
lines changed

test.py

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import subprocess
3838
import sys
3939
import time
40+
import uuid
4041
import xml.etree.ElementTree as ET
4142
import yaml
4243

@@ -316,8 +317,6 @@ def pattern(self):
316317
return "*_test.cql"
317318

318319

319-
320-
321320
class PythonTestSuite(TestSuite):
322321
"""A collection of Python pytests against a single Scylla instance"""
323322

@@ -332,15 +331,17 @@ def __init__(self, path, cfg, options, mode):
332331

333332
topology = self.cfg.get("topology", { "class": "simple", "replication_factor": 1 })
334333

335-
self.start_server = self.topology_for_class(topology["class"], topology)
334+
self.create_cluster = self.topology_for_class(topology["class"], topology)
336335

337-
self.servers = Pool(cfg.get("pool_size", 2), self.start_server)
336+
self.clusters = Pool(cfg.get("pool_size", 2), self.create_cluster)
338337

339-
def create_server(self):
338+
def create_server(self, cluster_name, seed):
340339
server = ScyllaServer(
341340
exe=self.scylla_exe,
342341
vardir=self.options.tmpdir,
343-
hosts=self.hosts,
342+
host_registry=self.hosts,
343+
cluster_name=cluster_name,
344+
seed=seed,
344345
cmdline_options=self.cfg.get("extra_scylla_cmdline_options", []))
345346

346347
# Suite artefacts are removed when
@@ -353,16 +354,18 @@ def create_server(self):
353354
return server
354355

355356
def topology_for_class(self, class_name, cfg):
357+
356358
if class_name.lower() == "simple":
357359
replicas = int(cfg["replication_factor"])
358-
cluster = []
359-
360360
async def start_simple():
361+
cluster = []
362+
cluster_name = str(uuid.uuid1())
361363
for i in range(replicas):
362-
server = self.create_server()
364+
seed = cluster[0].host if cluster else None
365+
server = self.create_server(cluster_name, seed)
363366
cluster.append(server)
364367
await server.start()
365-
return cluster[0]
368+
return cluster
366369

367370
return start_simple
368371
else:
@@ -610,8 +613,8 @@ def print_summary(self):
610613

611614
async def run(self, options):
612615
# This test can and should be killed gently, with SIGTERM, not with SIGKILL
613-
async with self.suite.servers.instance() as server:
614-
self.args.insert(0, "--host={}".format(server.host))
616+
async with self.suite.clusters.instance() as cluster:
617+
self.args.insert(0, "--host={}".format(cluster[0].host))
615618
self.success = await run_test(self, options)
616619
logging.info("Test #%d %s", self.id, "succeeded" if self.success else "failed ")
617620
return self

test/pylib/scylla_server.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -69,20 +69,20 @@
6969

7070

7171
class ScyllaServer:
72-
def __init__(self, exe=None, vardir=None, hosts=None,
73-
cmdline_options=None):
72+
def __init__(self, exe=None, vardir=None, host_registry=None,
73+
cluster_name=None, seed=None, cmdline_options=None):
7474
self.exe = os.path.abspath(exe)
7575
self.vardir = vardir
76-
self.hosts = hosts
76+
self.host_registry = host_registry
7777
self.cmdline_options = cmdline_options
7878
self.cfg = {
79-
"cluster_name": None,
79+
"cluster_name": cluster_name,
8080
"host": None,
81-
"workdir": None,
82-
"seeds": None,
83-
"skip_wait_for_gossip_to_settle": 0,
8481
"ring_delay_ms": 0,
82+
"seeds": seed,
83+
"skip_wait_for_gossip_to_settle": 0,
8584
"smp": 2,
85+
"workdir": None,
8686
}
8787
self.cmd = None
8888

@@ -124,10 +124,9 @@ async def install(self):
124124

125125
# Scylla assumes all instances of a cluster use the same port,
126126
# so each instance needs an own IP address.
127-
self.cfg["cluster_name"] = str(uuid.uuid1())
128-
self.cfg["host"] = await self.hosts.lease_host()
127+
self.cfg["host"] = await self.host_registry.lease_host()
128+
self.cfg["seeds"] = self.cfg.get("seeds") or self.cfg["host"]
129129
self.cfg["workdir"] = os.path.join(self.vardir, self.cfg["host"])
130-
self.cfg["seeds"] = self.cfg["host"]
131130

132131
logging.info("installing Scylla server in %s...", self.cfg["workdir"])
133132

@@ -239,5 +238,6 @@ async def uninstall(self):
239238
# shutil.rmtree(self.cfg["workdir"])
240239
# os.remove(self.log_file_name)
241240

242-
await self.hosts.release_host(self.cfg["host"])
241+
await self.host_registry.release_host(self.cfg["host"])
243242
self.cfg["host"] = None
243+

test/topology/conftest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ def this_dc(cql):
116116
def test_keyspace(cql, this_dc):
117117
name = unique_name()
118118
cql.execute("CREATE KEYSPACE " + name + " WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', '" +
119-
this_dc + "' : 1 }")
119+
this_dc + "' : 3 }")
120120
yield name
121121
cql.execute("DROP KEYSPACE " + name)
122122

0 commit comments

Comments
 (0)