Skip to content

Commit 28de7be

Browse files
committed
Update tests to 1.34
1 parent 619334b commit 28de7be

6 files changed

Lines changed: 33 additions & 29 deletions

File tree

Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,12 @@ build:
1313
.PHONY: run-tests
1414
run-tests:
1515
docker compose -f tests/fdb/docker-compose.yaml up --build --exit-code-from tests --abort-on-container-exit
16+
docker compose -f tests/fdb/docker-compose.yaml down
1617

1718
.PHONY: run-tests-api
1819
run-tests-api:
1920
docker compose -f tests/api/docker-compose.yaml up --build --exit-code-from tests --abort-on-container-exit
21+
docker compose -f tests/api/docker-compose.yaml down
2022

2123
.PHONY: start-k3s
2224
start-k3s:

pkg/drivers/fdb/fdb_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ func TestFDB(t *testing.T) {
177177
rev, result, err = f.List(ctx, "/abc/", "/abc/key", 0, currentRev, false)
178178
require.NoError(t, err)
179179
require.Equal(t, valuesAsSlice(events), result)
180-
require.Equal(t, currentRev, rev)
180+
require.LessOrEqual(t, currentRev, rev)
181181

182182
_, resultKeysOnly, err := f.List(ctx, "/abc/", "/abc/key", 0, currentRev, true)
183183
require.NoError(t, err)
@@ -189,7 +189,7 @@ func TestFDB(t *testing.T) {
189189

190190
rev, result, err = f.List(ctx, keyName, keyName, 0, currentRev, false)
191191
require.NoError(t, err)
192-
require.Equal(t, nextRev, rev)
192+
require.LessOrEqual(t, nextRev, rev)
193193
require.Equal(t, []*server.KeyValue{event}, result)
194194

195195
rev, result, err = f.List(ctx, "/", keyName, 0, currentRev, false)

tests/api/docker-compose.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
services:
22
fdb-test:
3-
container_name: fdb-test-api
3+
container_name: fdb-test
44
image: ghcr.io/melgenek/f8n/foundationdb:7.3.69
55
post_start:
66
- command: >

tests/k3s/docker-compose.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ services:
5454
container_name: k3s
5555
depends_on:
5656
- f8n
57-
image: docker.io/rancher/k3s:v1.33.3-k3s1
57+
image: docker.io/rancher/k3s:v1.34.1-k3s1
5858
privileged: true
5959
command:
6060
- server

tests/load/scripts/histogram.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
METRIC = 'etcd_request_duration_seconds'
1717

1818

19-
def main(type, *args, **kwargs):
19+
def main(resource, *args, **kwargs):
2020
global v1
2121

2222
try:
@@ -44,11 +44,11 @@ def main(type, *args, **kwargs):
4444
k, v = part.split('=')
4545
labels[k] = v.strip('"')
4646

47-
if not labels.get('type', '').endswith(type):
47+
if not labels.get('resource', '').endswith(resource):
4848
continue
4949

5050
if labels['operation'] not in operations:
51-
operations[labels['operation']] = {'counts': [], 'buckets': [], 'type': labels['type']}
51+
operations[labels['operation']] = {'counts': [], 'buckets': [], 'resource': labels['resource']}
5252
prev_value = 0
5353

5454
if metric.endswith('_bucket'):
@@ -61,15 +61,15 @@ def main(type, *args, **kwargs):
6161
operations[labels['operation']]['count'] = value
6262

6363
for operation, stats in operations.items():
64-
print(f"\n{stats['sum'] / stats['count']:.3f} average {kwargs['backend_name']} request duration (seconds): {operation} {stats['type']}")
64+
print(f"\n{stats['sum'] / stats['count']:.3f} average {kwargs['backend_name']} request duration (seconds): {operation} {stats['resource']}")
6565
fig = tpl.figure()
6666
fig.barh(stats['counts'], stats['buckets'], max_width=50)
6767
fig.show()
6868

6969

7070
if __name__ == '__main__':
7171
parser = argparse.ArgumentParser()
72-
parser.add_argument('--type', '-t', type=str, required=False, default='configmaps')
72+
parser.add_argument('--resource', '-t', type=str, required=False, default='configmaps')
7373
parser.add_argument('--log-level', '-l', type=str, required=False, default='INFO')
7474
parser.add_argument('--backend-name', '-b', type=str, required=False, default='etcd')
7575
args = parser.parse_args()

tests/load/scripts/loadmap.py

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -57,39 +57,41 @@ def main(rounds, *args, **kwargs):
5757
def update_or_merge_configmap(cm):
5858
while True:
5959
try:
60-
logging.debug(f"Updating {cm.metadata.name} rev={cm.metadata.resource_version}")
60+
# Always fetch latest version first
61+
latest_cm = v1.read_namespaced_config_map(name=cm.metadata.name, namespace=namespace)
62+
if not latest_cm.data:
63+
latest_cm.data = {}
64+
# Merge new data
65+
latest_cm.data.update(cm.data)
66+
cm = latest_cm
67+
68+
# Replace using the correct resourceVersion
6169
return v1.replace_namespaced_config_map(name=cm.metadata.name, namespace=namespace, body=cm)
6270
except client.exceptions.ApiException as e:
6371
logging.debug(f"\tError: {e.status}")
64-
if e.status == 409 and 'StorageError: invalid object' in e.body:
65-
logging.debug("\tCreating and merging...")
66-
cm1 = create_or_get_configmap(cm)
67-
if not cm1.data:
68-
cm1.data = dict()
69-
cm1.data.update(cm.data)
70-
cm = cm1
71-
elif e.status == 409:
72-
logging.debug("\tReading and merging...")
72+
if e.status == 404:
73+
# ConfigMap doesn't exist, try to create it
74+
cm.metadata.resource_version = None # must be None for create
7375
try:
74-
cm1 = v1.read_namespaced_config_map(name=cm.metadata.name, namespace=namespace)
75-
if not cm1.data:
76-
cm1.data = dict()
77-
cm1.data.update(cm.data)
78-
cm = cm1
76+
return v1.create_namespaced_config_map(namespace=namespace, body=cm)
7977
except client.exceptions.ApiException as e1:
80-
if e1.status == 404:
81-
pass
78+
if e1.status == 409:
79+
# Someone else created it, retry merge
80+
continue
8281
else:
83-
raise e1
82+
raise
83+
elif e.status == 409:
84+
# Conflict, retry with latest version
85+
continue
8486
else:
85-
raise e
87+
raise
8688

8789

8890
def create_or_get_configmap(cm):
89-
cm.metadata.resource_version = ''
9091
while True:
9192
try:
9293
logging.debug(f"Creating {cm.metadata.name}")
94+
cm.metadata.resource_version = None # must be None for create
9395
return v1.create_namespaced_config_map(namespace=namespace, body=cm)
9496
except client.exceptions.ApiException as e:
9597
logging.debug(f"\tError: {e.status}")

0 commit comments

Comments
 (0)