improve api tests and error output

show only relevant aptly logs if a test fails.
for async tasks, show task output, as it contains the error message.
This commit is contained in:
André Roth
2024-07-16 19:48:04 +02:00
parent 8029305d32
commit 440c3debdc
11 changed files with 278 additions and 175 deletions
+88 -66
View File
@@ -27,11 +27,12 @@ class PublishAPITestRepo(APITest):
"pyspi_0.6.1-1.3.diff.gz", "pyspi_0.6.1.orig.tar.gz",
"pyspi-0.6.1-1.3.stripped.dsc").status_code, 200)
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d).json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/repos/" + repo_name + "/file/" + d)
self.check_task(task)
# publishing under prefix, default distribution
prefix = self.random_name()
resp = self.post_task(
task = self.post_task(
"/api/publish/" + prefix,
json={
"SourceKind": "local",
@@ -39,6 +40,7 @@ class PublishAPITestRepo(APITest):
"Signing": DefaultSigningOptions,
}
)
self.check_task(task)
repo_expected = {
'AcquireByHash': False,
'Architectures': ['i386', 'source'],
@@ -56,8 +58,6 @@ class PublishAPITestRepo(APITest):
'Storage': '',
'Suite': ''}
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
all_repos = self.get("/api/publish")
self.check_equal(all_repos.status_code, 200)
self.check_in(repo_expected, all_repos.json())
@@ -74,7 +74,7 @@ class PublishAPITestRepo(APITest):
# publishing under root, custom distribution, architectures
distribution = self.random_name()
resp = self.post_task(
task = self.post_task(
"/api/publish/:.",
json={
"SourceKind": "local",
@@ -84,7 +84,7 @@ class PublishAPITestRepo(APITest):
"Architectures": ["i386", "amd64"],
}
)
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
self.check_task(task)
repo2_expected = {
'AcquireByHash': False,
'Architectures': ['amd64', 'i386'],
@@ -138,12 +138,14 @@ class PublishSnapshotAPITest(APITest):
self.check_equal(self.upload("/api/files/" + d,
"libboost-program-options-dev_1.49.0.1_i386.deb").status_code, 200)
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d).json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/repos/" + repo_name + "/file/" + d)
self.check_task(task)
self.check_equal(self.post_task("/api/repos/" + repo_name + '/snapshots', json={'Name': snapshot_name}).json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/repos/" + repo_name + '/snapshots', json={'Name': snapshot_name})
self.check_task(task)
prefix = self.random_name()
resp = self.post_task(
task = self.post_task(
"/api/publish/" + prefix,
json={
"AcquireByHash": True,
@@ -157,9 +159,9 @@ class PublishSnapshotAPITest(APITest):
"Label": "fun",
}
)
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
self.check_task(task)
_id = resp.json()['ID']
_id = task.json()['ID']
resp = self.get("/api/tasks/" + str(_id) + "/detail")
self.check_equal(resp.json()['RemainingNumberOfPackages'], 0)
self.check_equal(resp.json()['TotalNumberOfPackages'], 1)
@@ -213,10 +215,11 @@ class PublishUpdateAPITestRepo(APITest):
"pyspi_0.6.1-1.3.dsc",
"pyspi_0.6.1-1.3.diff.gz", "pyspi_0.6.1.orig.tar.gz",
"pyspi-0.6.1-1.3.stripped.dsc").status_code, 200)
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d).json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/repos/" + repo_name + "/file/" + d)
self.check_task(task)
prefix = self.random_name()
resp = self.post_task(
task = self.post_task(
"/api/publish/" + prefix,
json={
"Architectures": ["i386", "source"],
@@ -225,8 +228,7 @@ class PublishUpdateAPITestRepo(APITest):
"Signing": DefaultSigningOptions,
}
)
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
self.check_task(task)
self.check_not_exists(
"public/" + prefix + "/pool/main/b/boost-defaults/libboost-program-options-dev_1.49.0.1_i386.deb")
@@ -236,20 +238,22 @@ class PublishUpdateAPITestRepo(APITest):
d = self.random_name()
self.check_equal(self.upload("/api/files/" + d,
"libboost-program-options-dev_1.49.0.1_i386.deb").status_code, 200)
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d).json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/repos/" + repo_name + "/file/" + d)
self.check_task(task)
self.check_equal(self.delete_task("/api/repos/" + repo_name + "/packages/",
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89']}).json()['State'], TASK_SUCCEEDED)
task = self.delete_task("/api/repos/" + repo_name + "/packages/",
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89']})
self.check_task(task)
# Update and switch AcquireByHash on.
resp = self.put_task(
task = self.put_task(
"/api/publish/" + prefix + "/wheezy",
json={
"AcquireByHash": True,
"Signing": DefaultSigningOptions,
}
)
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
self.check_task(task)
repo_expected = {
'AcquireByHash': True,
'Architectures': ['i386', 'source'],
@@ -279,7 +283,8 @@ class PublishUpdateAPITestRepo(APITest):
self.check_not_exists(
"public/" + prefix + "/pool/main/p/pyspi/pyspi-0.6.1-1.3.stripped.dsc")
self.check_equal(self.delete_task("/api/publish/" + prefix + "/wheezy").json()['State'], TASK_SUCCEEDED)
task = self.delete_task("/api/publish/" + prefix + "/wheezy")
self.check_task(task)
self.check_not_exists("public/" + prefix + "dists/")
@@ -300,10 +305,11 @@ class PublishConcurrentUpdateAPITestRepo(APITest):
"pyspi_0.6.1-1.3.dsc",
"pyspi_0.6.1-1.3.diff.gz", "pyspi_0.6.1.orig.tar.gz",
"pyspi-0.6.1-1.3.stripped.dsc").status_code, 200)
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d).json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/repos/" + repo_name + "/file/" + d)
self.check_task(task)
prefix = self.random_name()
resp = self.post_task(
task = self.post_task(
"/api/publish/" + prefix,
json={
"Architectures": ["i386", "source"],
@@ -312,8 +318,7 @@ class PublishConcurrentUpdateAPITestRepo(APITest):
"Signing": DefaultSigningOptions,
}
)
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
self.check_task(task)
self.check_not_exists(
"public/" + prefix + "/pool/main/b/boost-defaults/libboost-program-options-dev_1.49.0.1_i386.deb")
@@ -323,10 +328,12 @@ class PublishConcurrentUpdateAPITestRepo(APITest):
d = self.random_name()
self.check_equal(self.upload("/api/files/" + d,
"libboost-program-options-dev_1.49.0.1_i386.deb").status_code, 200)
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d).json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/repos/" + repo_name + "/file/" + d)
self.check_task(task)
self.check_equal(self.delete_task("/api/repos/" + repo_name + "/packages/",
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89']}).json()['State'], TASK_SUCCEEDED)
task = self.delete_task("/api/repos/" + repo_name + "/packages/",
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89']})
self.check_task(task)
def _do_update(result, index):
resp = self.put_task(
@@ -379,7 +386,8 @@ class PublishConcurrentUpdateAPITestRepo(APITest):
self.check_not_exists(
"public/" + prefix + "/pool/main/p/pyspi/pyspi-0.6.1-1.3.stripped.dsc")
self.check_equal(self.delete_task("/api/publish/" + prefix + "/wheezy").json()['State'], TASK_SUCCEEDED)
task = self.delete_task("/api/publish/" + prefix + "/wheezy")
self.check_task(task)
self.check_not_exists("public/" + prefix + "dists/")
@@ -400,18 +408,18 @@ class PublishUpdateSkipCleanupAPITestRepo(APITest):
"pyspi_0.6.1-1.3.dsc",
"pyspi_0.6.1-1.3.diff.gz", "pyspi_0.6.1.orig.tar.gz",
"pyspi-0.6.1-1.3.stripped.dsc").status_code, 200)
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d).json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/repos/" + repo_name + "/file/" + d)
self.check_task(task)
prefix = self.random_name()
resp = self.post_task("/api/publish/" + prefix,
task = self.post_task("/api/publish/" + prefix,
json={
"Architectures": ["i386", "source"],
"SourceKind": "local",
"Sources": [{"Name": repo_name}],
"Signing": DefaultSigningOptions,
})
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
self.check_task(task)
self.check_not_exists(
"public/" + prefix + "/pool/main/b/boost-defaults/libboost-program-options-dev_1.49.0.1_i386.deb")
@@ -420,7 +428,7 @@ class PublishUpdateSkipCleanupAPITestRepo(APITest):
# Publish two repos, so that deleting one while skipping cleanup will
# not delete the whole prefix.
resp = self.post_task("/api/publish/" + prefix,
task = self.post_task("/api/publish/" + prefix,
json={
"Architectures": ["i386", "source"],
"Distribution": "otherdist",
@@ -428,23 +436,24 @@ class PublishUpdateSkipCleanupAPITestRepo(APITest):
"Sources": [{"Name": repo_name}],
"Signing": DefaultSigningOptions,
})
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
self.check_task(task)
d = self.random_name()
self.check_equal(self.upload("/api/files/" + d,
"libboost-program-options-dev_1.49.0.1_i386.deb").status_code, 200)
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d).json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/repos/" + repo_name + "/file/" + d)
self.check_task(task)
self.check_equal(self.delete_task("/api/repos/" + repo_name + "/packages/",
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89']}).json()['State'], TASK_SUCCEEDED)
task = self.delete_task("/api/repos/" + repo_name + "/packages/",
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89']})
self.check_task(task)
resp = self.put_task("/api/publish/" + prefix + "/wheezy",
task = self.put_task("/api/publish/" + prefix + "/wheezy",
json={
"Signing": DefaultSigningOptions,
"SkipCleanup": True,
})
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
self.check_task(task)
repo_expected = {
'AcquireByHash': False,
'Architectures': ['i386', 'source'],
@@ -471,7 +480,8 @@ class PublishUpdateSkipCleanupAPITestRepo(APITest):
self.check_exists("public/" + prefix +
"/pool/main/p/pyspi/pyspi-0.6.1-1.3.stripped.dsc")
self.check_equal(self.delete_task("/api/publish/" + prefix + "/wheezy", params={"SkipCleanup": "1"}).json()['State'], TASK_SUCCEEDED)
task = self.delete_task("/api/publish/" + prefix + "/wheezy", params={"SkipCleanup": "1"})
self.check_task(task)
self.check_exists("public/" + prefix + "/pool/main/b/boost-defaults/libboost-program-options-dev_1.49.0.1_i386.deb")
self.check_exists("public/" + prefix + "/pool/main/p/pyspi/pyspi-0.6.1-1.3.stripped.dsc")
@@ -493,13 +503,15 @@ class PublishSwitchAPITestRepo(APITest):
"pyspi_0.6.1-1.3.dsc",
"pyspi_0.6.1-1.3.diff.gz", "pyspi_0.6.1.orig.tar.gz",
"pyspi-0.6.1-1.3.stripped.dsc").status_code, 200)
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d).json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/repos/" + repo_name + "/file/" + d)
self.check_task(task)
snapshot1_name = self.random_name()
self.check_equal(self.post_task("/api/repos/" + repo_name + '/snapshots', json={'Name': snapshot1_name}).json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/repos/" + repo_name + '/snapshots', json={'Name': snapshot1_name})
self.check_task(task)
prefix = self.random_name()
resp = self.post_task(
task = self.post_task(
"/api/publish/" + prefix,
json={
"Architectures": ["i386", "source"],
@@ -507,8 +519,8 @@ class PublishSwitchAPITestRepo(APITest):
"Sources": [{"Name": snapshot1_name}],
"Signing": DefaultSigningOptions,
})
self.check_task(task)
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
repo_expected = {
'AcquireByHash': False,
'Architectures': ['i386', 'source'],
@@ -537,22 +549,25 @@ class PublishSwitchAPITestRepo(APITest):
d = self.random_name()
self.check_equal(self.upload("/api/files/" + d,
"libboost-program-options-dev_1.49.0.1_i386.deb").status_code, 200)
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d).json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/repos/" + repo_name + "/file/" + d)
self.check_task(task)
self.check_equal(self.delete_task("/api/repos/" + repo_name + "/packages/",
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89']}).json()['State'], TASK_SUCCEEDED)
task = self.delete_task("/api/repos/" + repo_name + "/packages/",
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89']})
self.check_task(task)
snapshot2_name = self.random_name()
self.check_equal(self.post_task("/api/repos/" + repo_name + '/snapshots', json={'Name': snapshot2_name}).json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/repos/" + repo_name + '/snapshots', json={'Name': snapshot2_name})
self.check_task(task)
resp = self.put_task(
task = self.put_task(
"/api/publish/" + prefix + "/wheezy",
json={
"Snapshots": [{"Component": "main", "Name": snapshot2_name}],
"Signing": DefaultSigningOptions,
"SkipContents": True,
})
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
self.check_task(task)
repo_expected = {
'AcquireByHash': False,
'Architectures': ['i386', 'source'],
@@ -579,7 +594,8 @@ class PublishSwitchAPITestRepo(APITest):
self.check_not_exists(
"public/" + prefix + "/pool/main/p/pyspi/pyspi-0.6.1-1.3.stripped.dsc")
self.check_equal(self.delete_task("/api/publish/" + prefix + "/wheezy").json()['State'], TASK_SUCCEEDED)
task = self.delete_task("/api/publish/" + prefix + "/wheezy")
self.check_task(task)
self.check_not_exists("public/" + prefix + "dists/")
@@ -600,13 +616,15 @@ class PublishSwitchAPISkipCleanupTestRepo(APITest):
"pyspi_0.6.1-1.3.dsc",
"pyspi_0.6.1-1.3.diff.gz", "pyspi_0.6.1.orig.tar.gz",
"pyspi-0.6.1-1.3.stripped.dsc").status_code, 200)
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d).json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/repos/" + repo_name + "/file/" + d)
self.check_task(task)
snapshot1_name = self.random_name()
self.check_equal(self.post_task("/api/repos/" + repo_name + '/snapshots', json={'Name': snapshot1_name}).json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/repos/" + repo_name + '/snapshots', json={'Name': snapshot1_name})
self.check_task(task)
prefix = self.random_name()
resp = self.post_task("/api/publish/" + prefix,
task = self.post_task("/api/publish/" + prefix,
json={
"Architectures": ["i386", "source"],
"SourceKind": "snapshot",
@@ -614,7 +632,7 @@ class PublishSwitchAPISkipCleanupTestRepo(APITest):
"Signing": DefaultSigningOptions,
})
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
self.check_task(task)
repo_expected = {
'AcquireByHash': False,
'Architectures': ['i386', 'source'],
@@ -642,7 +660,7 @@ class PublishSwitchAPISkipCleanupTestRepo(APITest):
# Publish two snapshots, so that deleting one while skipping cleanup will
# not delete the whole prefix.
resp = self.post_task("/api/publish/" + prefix,
task = self.post_task("/api/publish/" + prefix,
json={
"Architectures": ["i386", "source"],
"Distribution": "otherdist",
@@ -651,7 +669,7 @@ class PublishSwitchAPISkipCleanupTestRepo(APITest):
"Signing": DefaultSigningOptions,
})
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
self.check_task(task)
repo_expected = {
'AcquireByHash': False,
'Architectures': ['i386', 'source'],
@@ -675,22 +693,25 @@ class PublishSwitchAPISkipCleanupTestRepo(APITest):
d = self.random_name()
self.check_equal(self.upload("/api/files/" + d,
"libboost-program-options-dev_1.49.0.1_i386.deb").status_code, 200)
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d).json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/repos/" + repo_name + "/file/" + d)
self.check_task(task)
self.check_equal(self.delete_task("/api/repos/" + repo_name + "/packages/",
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89']}).json()['State'], TASK_SUCCEEDED)
task = self.delete_task("/api/repos/" + repo_name + "/packages/",
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89']})
self.check_task(task)
snapshot2_name = self.random_name()
self.check_equal(self.post_task("/api/repos/" + repo_name + '/snapshots', json={'Name': snapshot2_name}).json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/repos/" + repo_name + '/snapshots', json={'Name': snapshot2_name})
self.check_task(task)
resp = self.put_task("/api/publish/" + prefix + "/wheezy",
task = self.put_task("/api/publish/" + prefix + "/wheezy",
json={
"Snapshots": [{"Component": "main", "Name": snapshot2_name}],
"Signing": DefaultSigningOptions,
"SkipCleanup": True,
"SkipContents": True,
})
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
self.check_task(task)
repo_expected = {
'AcquireByHash': False,
'Architectures': ['i386', 'source'],
@@ -715,7 +736,8 @@ class PublishSwitchAPISkipCleanupTestRepo(APITest):
self.check_exists("public/" + prefix + "/pool/main/b/boost-defaults/libboost-program-options-dev_1.49.0.1_i386.deb")
self.check_exists("public/" + prefix + "/pool/main/p/pyspi/pyspi-0.6.1-1.3.stripped.dsc")
self.check_equal(self.delete_task("/api/publish/" + prefix + "/wheezy", params={"SkipCleanup": "1"}).json()['State'], TASK_SUCCEEDED)
task = self.delete_task("/api/publish/" + prefix + "/wheezy", params={"SkipCleanup": "1"})
self.check_task(task)
self.check_exists("public/" + prefix + "/pool/main/b/boost-defaults/libboost-program-options-dev_1.49.0.1_i386.deb")
self.check_exists("public/" + prefix + "/pool/main/p/pyspi/pyspi-0.6.1-1.3.stripped.dsc")