|
46 | 46 |
|
47 | 47 |
|
48 | 48 | def initialise_configurations():
|
49 |
| - configurations = [] |
50 |
| - configurations.append(neo4j.Config( |
51 |
| - name="4.2-cluster", |
52 |
| - image="neo4j:4.2-enterprise", |
53 |
| - version="4.2", |
54 |
| - edition="enterprise", |
55 |
| - cluster=True, |
56 |
| - suite="", # TODO: Define cluster suite |
57 |
| - scheme="neo4j", |
58 |
| - download=None, |
59 |
| - stress_test_duration=90)) |
60 |
| - |
61 |
| - configurations.append(neo4j.Config( |
62 |
| - name="3.5-enterprise", |
63 |
| - image="neo4j:3.5-enterprise", |
64 |
| - version="3.5", |
65 |
| - edition="enterprise", |
66 |
| - cluster=False, |
67 |
| - suite="3.5", |
68 |
| - scheme="bolt", |
69 |
| - download=None, |
70 |
| - stress_test_duration=0)) |
71 |
| - |
72 |
| - configurations.append(neo4j.Config( |
73 |
| - name="4.0-community", |
74 |
| - version="4.0", |
75 |
| - image="neo4j:4.0", |
76 |
| - edition="community", |
77 |
| - cluster=False, |
78 |
| - suite="4.0", |
79 |
| - scheme="neo4j", |
80 |
| - download=None, |
81 |
| - stress_test_duration=0)) |
82 |
| - |
83 |
| - configurations.append(neo4j.Config( |
84 |
| - name="4.1-enterprise", |
85 |
| - image="neo4j:4.1-enterprise", |
86 |
| - version="4.1", |
87 |
| - edition="enterprise", |
88 |
| - cluster=False, |
89 |
| - suite="4.1", |
90 |
| - scheme="neo4j", |
91 |
| - download=None, |
92 |
| - stress_test_duration=0)) |
93 |
| - |
94 |
| - if in_teamcity: |
95 |
| - configurations.append(neo4j.Config( |
96 |
| - name="4.2-tc-enterprise", |
97 |
| - image="neo4j:4.2.12-enterprise", |
98 |
| - version="4.2", |
99 |
| - edition="enterprise", |
100 |
| - cluster=False, |
101 |
| - suite="4.2", |
102 |
| - scheme="neo4j", |
103 |
| - download=teamcity.DockerImage( |
104 |
| - "neo4j-enterprise-4.2.12-docker-loadable.tar"), |
105 |
| - stress_test_duration=0)) |
106 |
| - |
107 |
| - configurations.append(neo4j.Config( |
108 |
| - name="4.3-tc-enterprise", |
109 |
| - image="neo4j:4.3.4-enterprise", |
110 |
| - version="4.3", |
111 |
| - edition="enterprise", |
112 |
| - cluster=False, |
113 |
| - suite="4.3", |
114 |
| - scheme="neo4j", |
| 49 | + def generate_config(version, enterprise, cluster, scheme, stress_test): |
| 50 | + assert (cluster and scheme == "neo4j" |
| 51 | + or not cluster and scheme in ("neo4j", "bolt")) |
| 52 | + edition = "enterprise" if enterprise else "community" |
| 53 | + name = "%s-%s%s-%s" % (version, edition, |
| 54 | + "-cluster" if cluster else "", scheme) |
| 55 | + return neo4j.Config( |
| 56 | + name=name, |
| 57 | + image="neo4j:%s%s" % (version, "-enterprise" if enterprise else ""), |
| 58 | + version=version, |
| 59 | + edition=edition, |
| 60 | + cluster=cluster, |
| 61 | + suite=version, |
| 62 | + scheme=scheme, |
| 63 | + download=None, |
| 64 | + stress_test_duration=stress_test |
| 65 | + ) |
| 66 | + |
| 67 | + def generate_tc_config(version, enterprise, cluster, scheme, stress_test): |
| 68 | + if not in_teamcity: |
| 69 | + return None |
| 70 | + assert (cluster and scheme == "neo4j" |
| 71 | + or not cluster and scheme in ("neo4j", "bolt")) |
| 72 | + edition = "enterprise" if enterprise else "community" |
| 73 | + name = "%s-tc-%s%s-%s" % (version, edition, |
| 74 | + "-cluster" if cluster else "", scheme) |
| 75 | + version_without_drop = ".".join(version.split(".")[:2]) |
| 76 | + return neo4j.Config( |
| 77 | + name=name, |
| 78 | + image="neo4j:%s%s" % (version, "-enterprise" if enterprise else ""), |
| 79 | + version=version_without_drop, |
| 80 | + edition=edition, |
| 81 | + cluster=cluster, |
| 82 | + suite=version_without_drop, |
| 83 | + scheme=scheme, |
115 | 84 | download=teamcity.DockerImage(
|
116 |
| - "neo4j-enterprise-4.3.4-docker-loadable.tar"), |
117 |
| - stress_test_duration=0)) |
| 85 | + "neo4j-%s-%s-docker-loadable.tar" % (edition, version) |
| 86 | + ), |
| 87 | + stress_test_duration=stress_test |
| 88 | + ) |
| 89 | + |
| 90 | + configurations = [ |
| 91 | + generate_config(version_, enterprise_, cluster_, scheme_, stress_test_) |
| 92 | + for (version_, enterprise_, cluster_, scheme_, stress_test_) in ( |
| 93 | + # LTS version |
| 94 | + # 3.5 servers only support routing scheme if configured as cluster |
| 95 | + ("3.5", False, False, "bolt", 0), |
| 96 | + ("3.5", True, False, "bolt", 0), |
| 97 | + ("3.5", True, True, "neo4j", 60), |
| 98 | + # not officially supported versions |
| 99 | + ("4.0", True, False, "neo4j", 0), |
| 100 | + ("4.1", True, False, "neo4j", 0), |
| 101 | + ("4.2", True, False, "neo4j", 0), |
| 102 | + # official backwards-compatibility |
| 103 | + ("4.3", False, False, "bolt", 0), |
| 104 | + ("4.3", False, False, "neo4j", 0), |
| 105 | + ("4.3", True, False, "bolt", 0), |
| 106 | + ("4.3", True, False, "neo4j", 0), |
| 107 | + ("4.3", True, True, "neo4j", 90), |
| 108 | + ) |
| 109 | + ] |
| 110 | + configurations += [ |
| 111 | + generate_tc_config(version_, enterprise_, cluster_, scheme_, |
| 112 | + stress_test_) |
| 113 | + for (version_, enterprise_, cluster_, scheme_, stress_test_) in ( |
| 114 | + # nightly build of official backwards-compatible version |
| 115 | + ("4.3.4", True, True, "neo4j", 60), |
| 116 | + # latest version |
| 117 | + ("4.4.0-dev", False, False, "bolt", 0), |
| 118 | + ("4.4.0-dev", False, False, "neo4j", 0), |
| 119 | + ("4.4.0-dev", True, False, "bolt", 90), |
| 120 | + ("4.4.0-dev", True, False, "neo4j", 0), |
| 121 | + ("4.4.0-dev", True, True, "neo4j", 90), |
| 122 | + ) |
| 123 | + ] |
| 124 | + |
| 125 | + configurations = list(filter(lambda conf: conf is not None, configurations)) |
118 | 126 | return configurations
|
119 | 127 |
|
120 | 128 |
|
@@ -340,25 +348,28 @@ def run_fail_wrapper(func, *args, **kwargs):
|
340 | 348 |
|
341 | 349 | # Start a Neo4j server
|
342 | 350 | if cluster:
|
343 |
| - print("Starting neo4j cluster (%s)" % server_name) |
| 351 | + print("\n Starting neo4j cluster (%s)\n" % server_name) |
344 | 352 | server = neo4j.Cluster(neo4j_config.image,
|
345 | 353 | server_name,
|
346 | 354 | neo4j_artifacts_path)
|
347 | 355 | else:
|
348 |
| - print("Starting neo4j standalone server (%s)" % server_name) |
| 356 | + print("\n Starting neo4j standalone server (%s)\n" % server_name) |
349 | 357 | server = neo4j.Standalone(neo4j_config.image,
|
350 | 358 | server_name,
|
351 | 359 | neo4j_artifacts_path,
|
352 | 360 | "neo4jserver", 7687,
|
353 | 361 | neo4j_config.edition)
|
354 | 362 | server.start(networks[0])
|
355 |
| - hostname, port = server.address() |
| 363 | + addresses = server.addresses() |
| 364 | + hostname, port = addresses[0] |
356 | 365 |
|
357 | 366 | # Wait until server is listening before running tests
|
358 | 367 | # Use driver container to check for Neo4j availability since connect
|
359 | 368 | # will be done from there
|
360 |
| - print("Waiting for neo4j service port to be available") |
361 |
| - driver_container.poll_host_and_port_until_available(hostname, port) |
| 369 | + for address in addresses: |
| 370 | + print("Waiting for neo4j service at %s to be available" |
| 371 | + % (address,)) |
| 372 | + driver_container.poll_host_and_port_until_available(*address) |
362 | 373 | print("Neo4j is reachable from driver")
|
363 | 374 |
|
364 | 375 | if test_flags["TESTKIT_TESTS"]:
|
|
0 commit comments