Skip to content

Commit 852db70

Browse files
authored
Fix flaky test (#399)
* Avoid "precondition failed" upon modifying collection properties * Avoid "precondition failed" upon modifying collection properties * Bump version number * Check for instrumentation * Increase timeout
1 parent 3c76912 commit 852db70

4 files changed

Lines changed: 17 additions & 9 deletions

File tree

.github/workflows/pypi.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,10 @@ jobs:
4343
env:
4444
TWINE_USERNAME: __token__
4545
TWINE_PASSWORD: ${{ secrets.PYPI_TEST_TOKEN }}
46-
run: twine upload --repository testpypi dist/*
46+
run: twine upload --verbose --repository testpypi dist/*
4747

4848
- name: Publish to PyPI
4949
env:
5050
TWINE_USERNAME: __token__
5151
TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}
52-
run: twine upload --repository pypi dist/*
52+
run: twine upload --verbose --repository pypi dist/*

arango/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "8.3.2"
1+
__version__ = "8.3.3"

tests/conftest.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ class GlobalData:
4646
secret: str = None
4747
root_password: str = None
4848
db_version: version = version.parse("0.0.0")
49+
is_instrumented: bool = False
4950
crash: bool = False
5051

5152

@@ -138,6 +139,9 @@ def pytest_configure(config):
138139
)
139140

140141
db_version = sys_db.version()
142+
global_data.is_instrumented = (
143+
"asan" in db_version or "tsan" in db_version or "coverage" in db_version
144+
)
141145
global_data.db_version = version.parse(db_version.split("-")[0])
142146

143147
# Create a user and non-system database for testing.
@@ -298,6 +302,11 @@ def db_version():
298302
return global_data.db_version
299303

300304

305+
@pytest.fixture(autouse=False)
306+
def is_instrumented():
307+
return global_data.is_instrumented
308+
309+
301310
@pytest.fixture(autouse=False)
302311
def url():
303312
return global_data.url

tests/test_collection.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ def test_collection_attributes(db, col, username):
4040
assert repr(col) == f"<StandardCollection {col.name}>"
4141

4242

43-
def test_collection_misc_methods(col, bad_col, cluster, db_version):
43+
def test_collection_misc_methods(col, bad_col, cluster, db_version, is_instrumented):
4444
# Test get properties
4545
properties = col.properties()
4646
assert properties["name"] == col.name
@@ -65,18 +65,17 @@ def test_collection_misc_methods(col, bad_col, cluster, db_version):
6565
}
6666
]
6767

68-
with pytest.raises(ValueError):
69-
# schema must not be empty
70-
properties = col.configure(
71-
sync=not prev_sync, schema={}, computed_values=computed_values
72-
)
68+
sleep_time = 9 if is_instrumented else 3
69+
time.sleep(sleep_time) # Avoid "precondition failed" in slow clusters
7370

7471
properties = col.configure(sync=not prev_sync, computed_values=computed_values)
7572

7673
assert properties["name"] == col.name
7774
assert properties["system"] is False
7875
assert properties["sync"] is not prev_sync
7976
assert properties["computedValues"] == computed_values
77+
78+
time.sleep(sleep_time) # Avoid "precondition failed" in slow clusters
8079
col.configure(computed_values=[])
8180

8281
# Test configure properties with bad collection

0 commit comments

Comments
 (0)