Skip to content

Commit c30f3d7

Browse files
Bouncheckavelanarius
authored andcommitted
Add Cassandra4 version fetch and test against it
1 parent 0e27280 commit c30f3d7

File tree

2 files changed

+28
-3
lines changed

2 files changed

+28
-3
lines changed

.github/workflows/[email protected]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ jobs:
105105
run: |
106106
pip3 install -r ci/requirements.txt
107107
echo "::set-output name=scylla-integration-tests-versions::$(python3 ci/version_fetch.py scylla-oss-stable:2 scylla-oss-rc scylla-enterprise-stable:2 scylla-enterprise-rc)"
108-
echo "::set-output name=cassandra-integration-tests-versions::$(python3 ci/version_fetch.py cassandra3-stable:1)"
108+
echo "::set-output name=cassandra-integration-tests-versions::$(python3 ci/version_fetch.py cassandra3-stable:1 cassandra4-stable:1)"
109109
outputs:
110110
scylla-integration-tests-versions: ${{ steps.fetch-versions.outputs.scylla-integration-tests-versions }}
111111
cassandra-integration-tests-versions: ${{ steps.fetch-versions.outputs.cassandra-integration-tests-versions }}

ci/version_fetch.py

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,10 @@
3232
CASSANDRA_ENDPOINT = 'https://dlcdn.apache.org/cassandra/'
3333

3434
CASSANDRA3_REGEX = re.compile(r'a href="(3)\.(\d+)\.(\d+)/"')
35+
CASSANDRA4_REGEX = re.compile(r'a href="(4)\.(\d+)\.(\d+)/"')
3536

3637
COMMAND_LINE_ARGUMENT = re.compile(
37-
r'((?:(scylla-oss-stable):(\d+))|(?:(scylla-enterprise-stable):(\d+))|(?:(cassandra3-stable):(\d+))|(?:(scylla-oss-rc))|(?:(scylla-enterprise-rc)))')
38+
r'((?:(scylla-oss-stable):(\d+))|(?:(scylla-enterprise-stable):(\d+))|(?:(cassandra3-stable):(\d+))|(?:(cassandra4-stable):(\d+))|(?:(scylla-oss-rc))|(?:(scylla-enterprise-rc)))')
3839

3940

4041
def fetch_last_scylla_oss_minor_versions(count):
@@ -177,13 +178,34 @@ def fetch_last_cassandra3_minor_versions(count):
177178
data = [f'{e[0]}.{e[1]}.{e[2]}' for e in data]
178179
return data
179180

181+
def fetch_last_cassandra4_minor_versions(count):
182+
# Download folder listing for Cassandra download site
183+
data = requests.get(CASSANDRA_ENDPOINT).text
184+
185+
# Parse only those version numbers which match '4.NUM.NUM'
186+
# into tuple (4, NUM, NUM)
187+
data = CASSANDRA4_REGEX.finditer(data)
188+
data = map(lambda e: e.groups(), data)
189+
data = map(lambda e: tuple(map(int, e)), data)
190+
191+
# Group by (major, minor) and select latest patch version
192+
data = sorted(data)
193+
data = groupby(data, key=lambda e: (e[0], e[1]))
194+
data = ((e[0][0], e[0][1], max(e[1])[2])
195+
for e in data)
196+
197+
# Return the latest ones
198+
data = list(data)[-count:]
199+
data = [f'{e[0]}.{e[1]}.{e[2]}' for e in data]
200+
return data
201+
180202

181203
if __name__ == '__main__':
182204
names = set()
183205

184206
for arg in sys.argv[1:]:
185207
if not COMMAND_LINE_ARGUMENT.fullmatch(arg):
186-
print("Usage:", sys.argv[0], "[scylla-oss-stable:COUNT] [scylla-oss-rc] [scylla-enterprise-stable:COUNT] [scylla-enterprise-rc] [cassandra3-stable:COUNT]...", file=sys.stderr)
208+
print("Usage:", sys.argv[0], "[scylla-oss-stable:COUNT] [scylla-oss-rc] [scylla-enterprise-stable:COUNT] [scylla-enterprise-rc] [cassandra3-stable:COUNT] [cassandra4-stable:COUNT]...", file=sys.stderr)
187209
sys.exit(1)
188210

189211
groups = COMMAND_LINE_ARGUMENT.match(arg).groups()
@@ -198,6 +220,9 @@ def fetch_last_cassandra3_minor_versions(count):
198220
elif mode_name == 'cassandra3-stable':
199221
names.update(
200222
fetch_last_cassandra3_minor_versions(int(groups[1])))
223+
elif mode_name == 'cassandra4-stable':
224+
names.update(
225+
fetch_last_cassandra4_minor_versions(int(groups[1])))
201226
elif mode_name == 'scylla-oss-rc':
202227
names.update(fetch_all_scylla_oss_rc_versions())
203228
elif mode_name == 'scylla-enterprise-rc':

0 commit comments

Comments
 (0)