aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexey Efimov <xeno@ydb.tech>2025-02-04 12:02:40 +0100
committerGitHub <noreply@github.com>2025-02-04 12:02:40 +0100
commite367c3b04ac98e3ab690729d31fc59c31a2b3a4d (patch)
tree1c69d59c99e5908efd1384bbdb1cc2ed0688405f
parent28ed3dfcdf9d2f488f627bf7f296018ae2fad605 (diff)
downloadydb-e367c3b04ac98e3ab690729d31fc59c31a2b3a4d.tar.gz
fix flaky tests in viewer (#14184)
-rw-r--r--ydb/core/viewer/tests/canondata/result.json20
-rw-r--r--ydb/core/viewer/tests/test.py27
2 files changed, 31 insertions, 16 deletions
diff --git a/ydb/core/viewer/tests/canondata/result.json b/ydb/core/viewer/tests/canondata/result.json
index ba8a5b9312..b1a21da9ff 100644
--- a/ydb/core/viewer/tests/canondata/result.json
+++ b/ydb/core/viewer/tests/canondata/result.json
@@ -52,7 +52,7 @@
"StorageGroups": [
{
"AllocationUnits": "0",
- "Available": "0",
+ "Available": "not-zero-number-text",
"DiskSpaceUsage": "not-zero-number",
"ErasureSpecies": "none",
"GroupGeneration": "1",
@@ -60,7 +60,7 @@
"LatencyGetFast": "accepted-value",
"LatencyPutTabletLog": "accepted-value",
"LatencyPutUserData": "accepted-value",
- "Limit": "0",
+ "Limit": "not-zero-number-text",
"MissingDisks": "0",
"Overall": "Green",
"PoolName": "static",
@@ -141,7 +141,7 @@
},
{
"AllocationUnits": "0",
- "Available": "0",
+ "Available": "not-zero-number-text",
"DiskSpaceUsage": "not-zero-number",
"ErasureSpecies": "none",
"GroupGeneration": "1",
@@ -150,7 +150,7 @@
"LatencyGetFast": "accepted-value",
"LatencyPutTabletLog": "accepted-value",
"LatencyPutUserData": "accepted-value",
- "Limit": "0",
+ "Limit": "not-zero-number-text",
"MediaType": "ROT,Kind:0",
"MissingDisks": "0",
"Overall": "Green",
@@ -232,7 +232,7 @@
},
{
"AllocationUnits": "0",
- "Available": "0",
+ "Available": "not-zero-number-text",
"DiskSpaceUsage": "not-zero-number",
"ErasureSpecies": "none",
"GroupGeneration": "1",
@@ -241,7 +241,7 @@
"LatencyGetFast": "accepted-value",
"LatencyPutTabletLog": "accepted-value",
"LatencyPutUserData": "accepted-value",
- "Limit": "0",
+ "Limit": "not-zero-number-text",
"MediaType": "ROT,Kind:0",
"MissingDisks": "0",
"Overall": "Green",
@@ -323,7 +323,7 @@
},
{
"AllocationUnits": "30",
- "Available": "0",
+ "Available": "not-zero-number-text",
"DiskSpaceUsage": "not-zero-number",
"ErasureSpecies": "none",
"GroupGeneration": "2",
@@ -332,7 +332,7 @@
"LatencyGetFast": "accepted-value",
"LatencyPutTabletLog": "accepted-value",
"LatencyPutUserData": "accepted-value",
- "Limit": "0",
+ "Limit": "not-zero-number-text",
"MediaType": "ROT",
"MissingDisks": "0",
"Overall": "Green",
@@ -414,7 +414,7 @@
},
{
"AllocationUnits": "48",
- "Available": "0",
+ "Available": "not-zero-number-text",
"DiskSpaceUsage": "not-zero-number",
"ErasureSpecies": "none",
"GroupGeneration": "2",
@@ -423,7 +423,7 @@
"LatencyGetFast": "accepted-value",
"LatencyPutTabletLog": "accepted-value",
"LatencyPutUserData": "accepted-value",
- "Limit": "0",
+ "Limit": "not-zero-number-text",
"MediaType": "ROT",
"MissingDisks": "0",
"Overall": "Green",
diff --git a/ydb/core/viewer/tests/test.py b/ydb/core/viewer/tests/test.py
index e2e4333163..743399bd04 100644
--- a/ydb/core/viewer/tests/test.py
+++ b/ydb/core/viewer/tests/test.py
@@ -71,7 +71,7 @@ def get_viewer_db(url, params=None):
wait_good = False
wait_time = 0
-max_wait_time = 120
+max_wait_time = 300
def wait_for_cluster_ready():
@@ -109,6 +109,13 @@ def wait_for_cluster_ready():
time.sleep(1)
wait_time += 1
for database in databases:
+ if database != domain_name:
+ call_viewer("/viewer/query", {
+ 'database': database,
+ 'query': 'create table table1(id int64, name text, primary key(id)))',
+ 'schema': 'multi'
+ })
+ for database in databases:
while wait_time < max_wait_time:
all_good = False
print("Waiting for database %s to be ready" % database)
@@ -132,15 +139,23 @@ def wait_for_cluster_ready():
while wait_time < max_wait_time:
all_good = False
while True:
- result = get_result(requests.get("http://localhost:%s/storage/groups?fields_required=all" % (cluster.nodes[1].mon_port))) # force connect between nodes
+ result = call_viewer("/viewer/query", {
+ 'database': domain_name,
+ 'query': 'SELECT * FROM `.sys/ds_vslots`',
+ })
if 'status_code' in result and result['status_code'] != 200:
break
bad = 0
- for group in result['StorageGroups']:
- if group['Available'] == 0 or group['Limit'] == 0:
+ for vslot in result:
+ if 'State' not in vslot or vslot['State'] != 'OK':
bad += 1
if bad > 0:
break
+ result = get_result(requests.get("http://localhost:%s/storage/groups?fields_required=all" % (cluster.nodes[1].mon_port))) # force connect between nodes
+ if 'status_code' in result and result['status_code'] != 200:
+ break
+ if len(result['StorageGroups']) < 5:
+ break
result = get_result(requests.get("http://localhost:%s/viewer/cluster" % (cluster.nodes[1].mon_port))) # force connect between nodes
if 'status_code' in result and result['status_code'] != 200:
break
@@ -421,9 +436,9 @@ def test_viewer_nodes():
def test_storage_groups():
- return get_viewer_normalized("/storage/groups", {
+ return normalize_result(get_viewer("/storage/groups", {
'fields_required': 'all'
- })
+ }))
def test_viewer_sysinfo():