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
+8 -3
View File
@@ -7,11 +7,16 @@ from api_lib import APITest
def check_gpgkey_exists(gpg_key, keyring):
subprocess.check_call([
p = subprocess.Popen([
"gpg", "--no-default-keyring",
"--keyring", keyring,
"--fingerprint", gpg_key,
])
"--fingerprint", gpg_key],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
)
p.communicate()
if p.returncode != 0:
raise Exception("gpg key does not exists")
class GPGAPITestAddKey(APITest):
+4 -11
View File
@@ -1,4 +1,4 @@
from api_lib import TASK_SUCCEEDED, APITest
from api_lib import APITest
class MirrorsAPITestCreateShow(APITest):
@@ -58,11 +58,8 @@ class MirrorsAPITestCreateUpdate(APITest):
mirror_desc["Name"] = self.random_name()
resp = self.put_task("/api/mirrors/" + mirror_name, json=mirror_desc)
self.check_equal(resp.status_code, 200)
self.check_task(resp)
_id = resp.json()['ID']
if resp.json()["State"] != TASK_SUCCEEDED:
resp = self.get("/api/tasks/" + str(_id) + "/output")
raise Exception("task failed: " + str(resp.json()))
resp = self.get("/api/tasks/" + str(_id) + "/detail")
self.check_equal(resp.status_code, 200)
@@ -95,7 +92,7 @@ class MirrorsAPITestCreateDelete(APITest):
self.check_equal(resp.status_code, 201)
resp = self.delete_task("/api/mirrors/" + mirror_name)
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
self.check_task(resp)
class MirrorsAPITestCreateList(APITest):
@@ -154,8 +151,4 @@ class MirrorsAPITestSkipArchitectureCheck(APITest):
mirror_desc = {'Name': mirror_name,
'IgnoreSignatures': True}
resp = self.put_task("/api/mirrors/" + mirror_name, json=mirror_desc)
self.check_equal(resp.status_code, 200)
_id = resp.json()['ID']
if resp.json()["State"] != TASK_SUCCEEDED:
resp = self.get("/api/tasks/" + str(_id) + "/output")
raise Exception("task failed: " + str(resp.json()))
self.check_task(resp)
+2 -2
View File
@@ -2,7 +2,7 @@ import urllib.error
import urllib.parse
import urllib.request
from api_lib import TASK_SUCCEEDED, APITest
from api_lib import APITest
class PackagesAPITestShow(APITest):
@@ -19,7 +19,7 @@ class PackagesAPITestShow(APITest):
"pyspi_0.6.1-1.3.dsc", "pyspi_0.6.1-1.3.diff.gz", "pyspi_0.6.1.orig.tar.gz").status_code, 200)
resp = self.post_task("/api/repos/" + repo_name + "/file/" + d)
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
self.check_task(resp)
# get information about package
pyspi_json = {
+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")
+63 -41
View File
@@ -1,4 +1,4 @@
from api_lib import TASK_FAILED, TASK_SUCCEEDED, APITest
from api_lib import APITest
from .publish import DefaultSigningOptions
@@ -41,7 +41,8 @@ class ReposAPITestCreateIndexDelete(APITest):
names = [repo["Name"] for repo in repos]
assert repo_name in names
self.check_equal(self.delete_task("/api/repos/" + repo_name).json()['State'], TASK_SUCCEEDED)
resp = self.delete_task("/api/repos/" + repo_name)
self.check_task(resp)
self.check_equal(self.delete("/api/repos/" + repo_name).status_code, 404)
self.check_equal(self.get("/api/repos/" + repo_name).status_code, 404)
@@ -61,25 +62,32 @@ class ReposAPITestCreateIndexDelete(APITest):
"pyspi_0.6.1-1.3.dsc", "pyspi_0.6.1-1.3.diff.gz", "pyspi_0.6.1.orig.tar.gz").status_code, 200)
resp = self.post_task("/api/repos/" + repo_name + "/file/" + d)
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
self.check_task(resp)
self.check_equal(self.post_task("/api/repos/" + repo_name + "/snapshots", json={"Name": repo_name}).json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/repos/" + repo_name + "/snapshots", json={"Name": repo_name})
self.check_task(task)
self.check_equal(self.post_task("/api/publish",
json={
"SourceKind": "local",
"Sources": [{"Name": repo_name}],
"Signing": DefaultSigningOptions,
}).json()['State'], TASK_SUCCEEDED)
resp = self.post_task("/api/publish",
json={
"SourceKind": "local",
"Sources": [{"Name": repo_name}],
"Signing": DefaultSigningOptions,
})
self.check_task(resp)
# repo is not deletable while it is published
self.check_equal(self.delete_task("/api/repos/" + repo_name).json()['State'], TASK_FAILED)
self.check_equal(self.delete_task("/api/repos/" + repo_name, params={"force": "1"}).json()['State'], TASK_FAILED)
task = self.delete_task("/api/repos/" + repo_name)
self.check_task_fail(task)
task = self.delete_task("/api/repos/" + repo_name, params={"force": "1"})
self.check_task_fail(task)
# drop published
self.check_equal(self.delete_task("/api/publish//" + distribution).json()['State'], TASK_SUCCEEDED)
self.check_equal(self.delete_task("/api/repos/" + repo_name).json()['State'], TASK_FAILED)
self.check_equal(self.delete_task("/api/repos/" + repo_name, params={"force": "1"}).json()['State'], TASK_SUCCEEDED)
task = self.delete_task("/api/publish//" + distribution)
self.check_task(task)
task = self.delete_task("/api/repos/" + repo_name)
self.check_task_fail(task)
task = self.delete_task("/api/repos/" + repo_name, params={"force": "1"})
self.check_task(task)
self.check_equal(self.get("/api/repos/" + repo_name).status_code, 404)
@@ -97,7 +105,7 @@ class ReposAPITestAdd(APITest):
"pyspi_0.6.1-1.3.dsc", "pyspi_0.6.1-1.3.diff.gz", "pyspi_0.6.1.orig.tar.gz").status_code, 200)
resp = self.post_task("/api/repos/" + repo_name + "/file/" + d)
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
self.check_task(resp)
resp = self.get("/api/tasks/" + str(resp.json()['ID']) + "/output")
self.check_equal(resp.status_code, 200)
@@ -125,7 +133,8 @@ class ReposAPITestAddNotFullRemove(APITest):
self.check_equal(self.upload("/api/files/" + d,
"pyspi_0.6.1-1.3.dsc", "pyspi_0.6.1-1.3.diff.gz", "pyspi_0.6.1.orig.tar.gz", "aptly.pub").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.get("/api/repos/" + repo_name + "/packages").json(), ['Psource pyspi 0.6.1-1.3 3a8b37cbd9a3559e'])
self.check_exists("upload/" + d + "/aptly.pub")
@@ -145,7 +154,8 @@ class ReposAPITestAddNoRemove(APITest):
self.check_equal(self.upload("/api/files/" + d,
"pyspi_0.6.1-1.3.dsc", "pyspi_0.6.1-1.3.diff.gz", "pyspi_0.6.1.orig.tar.gz").status_code, 200)
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d, params={"noRemove": 1}).json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/repos/" + repo_name + "/file/" + d, params={"noRemove": 1})
self.check_task(task)
self.check_equal(self.get("/api/repos/" + repo_name + "/packages").json(), ['Psource pyspi 0.6.1-1.3 3a8b37cbd9a3559e'])
self.check_exists("upload/" + d + "/pyspi_0.6.1-1.3.dsc")
@@ -165,7 +175,7 @@ class ReposAPITestAddFile(APITest):
"libboost-program-options-dev_1.49.0.1_i386.deb").status_code, 200)
resp = self.post_task("/api/repos/" + repo_name + "/file/" + d + "/libboost-program-options-dev_1.49.0.1_i386.deb")
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
self.check_task(resp)
resp = self.get("/api/tasks/" + str(resp.json()['ID']) + "/output")
self.check_equal(resp.status_code, 200)
@@ -197,7 +207,7 @@ class ReposAPITestInclude(APITest):
self.check_equal(resp.status_code, 200)
resp = self.post_task("/api/repos/" + repo_name + "/include/" + d, params={"ignoreSignature": 1})
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
self.check_task(resp)
resp = self.get("/api/tasks/" + str(resp.json()['ID']) + "/output")
self.check_equal(resp.status_code, 200)
@@ -225,7 +235,8 @@ class ReposAPITestShowQuery(APITest):
"libboost-program-options-dev_1.49.0.1_i386.deb", "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)
self.check_equal(sorted(self.get("/api/repos/" + repo_name + "/packages", params={"q": "pyspi"}).json()),
['Psource pyspi 0.6.1-1.3 3a8b37cbd9a3559e', 'Psource pyspi 0.6.1-1.4 f8f1daa806004e89'])
@@ -258,13 +269,15 @@ class ReposAPITestAddMultiple(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 + "/pyspi_0.6.1-1.3.dsc",
params={"noRemove": 1}).json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/repos/" + repo_name + "/file/" + d + "/pyspi_0.6.1-1.3.dsc",
params={"noRemove": 1})
self.check_task(task)
self.check_equal(sorted(self.get("/api/repos/" + repo_name + "/packages").json()),
['Psource pyspi 0.6.1-1.3 3a8b37cbd9a3559e'])
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d + "/pyspi-0.6.1-1.3.stripped.dsc").json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/repos/" + repo_name + "/file/" + d + "/pyspi-0.6.1-1.3.stripped.dsc")
self.check_task(task)
self.check_equal(sorted(self.get("/api/repos/" + repo_name + "/packages").json()),
['Psource pyspi 0.6.1-1.3 3a8b37cbd9a3559e', 'Psource pyspi 0.6.1-1.4 f8f1daa806004e89'])
@@ -286,34 +299,39 @@ class ReposAPITestPackagesAddDelete(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)
self.check_equal(sorted(self.get("/api/repos/" + repo_name + "/packages").json()),
['Pi386 libboost-program-options-dev 1.49.0.1 918d2f433384e378',
'Psource pyspi 0.6.1-1.3 3a8b37cbd9a3559e',
'Psource pyspi 0.6.1-1.4 f8f1daa806004e89'])
self.check_equal(self.post_task("/api/repos/" + repo_name + "/packages/",
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89']}).json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/repos/" + repo_name + "/packages/",
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89']})
self.check_task(task)
self.check_equal(sorted(self.get("/api/repos/" + repo_name + "/packages").json()),
['Pi386 libboost-program-options-dev 1.49.0.1 918d2f433384e378',
'Psource pyspi 0.6.1-1.3 3a8b37cbd9a3559e',
'Psource pyspi 0.6.1-1.4 f8f1daa806004e89'])
self.check_equal(self.post_task("/api/repos/" + repo_name + "/packages/",
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89',
'Psource no-such-package 0.6.1-1.4 f8f1daa806004e89']}).json()['State'], TASK_FAILED)
task = self.post_task("/api/repos/" + repo_name + "/packages/",
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89',
'Psource no-such-package 0.6.1-1.4 f8f1daa806004e89']})
self.check_task_fail(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)
self.check_equal(sorted(self.get("/api/repos/" + repo_name + "/packages").json()),
['Pi386 libboost-program-options-dev 1.49.0.1 918d2f433384e378',
'Psource pyspi 0.6.1-1.3 3a8b37cbd9a3559e'])
self.check_equal(self.post_task("/api/repos/" + repo_name + "/packages/",
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89']}).json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/repos/" + repo_name + "/packages/",
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89']})
self.check_task(task)
self.check_equal(sorted(self.get("/api/repos/" + repo_name + "/packages").json()),
['Pi386 libboost-program-options-dev 1.49.0.1 918d2f433384e378',
@@ -324,9 +342,10 @@ class ReposAPITestPackagesAddDelete(APITest):
self.check_equal(self.post("/api/repos", json={"Name": repo_name2, "Comment": "fun repo"}).status_code, 201)
self.check_equal(self.post_task("/api/repos/" + repo_name2 + "/packages/",
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89',
'Pi386 libboost-program-options-dev 1.49.0.1 918d2f433384e378']}).json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/repos/" + repo_name2 + "/packages/",
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89',
'Pi386 libboost-program-options-dev 1.49.0.1 918d2f433384e378']})
self.check_task(task)
self.check_equal(sorted(self.get("/api/repos/" + repo_name2 + "/packages").json()),
['Pi386 libboost-program-options-dev 1.49.0.1 918d2f433384e378',
@@ -349,7 +368,7 @@ class ReposAPITestShowMaxVersion(APITest):
).status_code, 200)
resp = self.post_task("/api/repos/" + repo_name + "/file/" + d)
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
self.check_task(resp)
resp = self.get("/api/tasks/" + str(resp.json()['ID']) + "/output")
self.check_equal(resp.status_code, 200)
@@ -377,7 +396,7 @@ class ReposAPITestCopyPackage(APITest):
d = self.random_name()
self.check_equal(self.upload(f"/api/files/{d}", f"{pkg_name}.deb").status_code, 200)
resp = self.post_task(f"/api/repos/{repo1_name}/file/{d}")
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
self.check_task(resp)
# Creating target repo
repo2_name = self.random_name()
@@ -385,8 +404,11 @@ class ReposAPITestCopyPackage(APITest):
# Copy the package
resp = self.post_task(f"/api/repos/{repo2_name}/copy/{repo1_name}/{pkg_name}")
self.check_equal(resp.status_code, 200)
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
self.check_task(resp)
# Test non-existing package
resp = self.post_task(f"/api/repos/{repo2_name}/copy/{repo1_name}/la<la>la")
self.check_task_fail(resp)
self.check_equal(self.get(f"/api/repos/{repo2_name}/packages").json(),
['Pi386 libboost-program-options-dev 1.49.0.1 918d2f433384e378'])
+45 -39
View File
@@ -1,4 +1,4 @@
from api_lib import TASK_FAILED, TASK_SUCCEEDED, APITest
from api_lib import TASK_FAILED, APITest
from .publish import DefaultSigningOptions
@@ -13,8 +13,8 @@ class SnapshotsAPITestCreateShowEmpty(APITest):
'Name': snapshot_name}
# create empty snapshot
resp = self.post_task("/api/snapshots", json=snapshot_desc)
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/snapshots", json=snapshot_desc)
self.check_task(task)
self.check_subset(snapshot_desc, self.get("/api/snapshots/" + snapshot_name).json())
self.check_equal(self.get("/api/snapshots/" + snapshot_name).status_code, 200)
@@ -47,8 +47,8 @@ class SnapshotsAPITestCreateFromRefs(APITest):
# create empty snapshot
empty_snapshot_name = self.random_name()
resp = self.post_task("/api/snapshots", json={"Name": empty_snapshot_name})
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/snapshots", json={"Name": empty_snapshot_name})
self.check_task(task)
self.check_equal(
self.get("/api/snapshots/" + empty_snapshot_name).json()['Description'], "Created as empty"
)
@@ -59,14 +59,15 @@ class SnapshotsAPITestCreateFromRefs(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)
# create snapshot with empty snapshot as source and package
snapshot = snapshot_desc.copy()
snapshot['PackageRefs'] = ["Pi386 libboost-program-options-dev 1.49.0.1 918d2f433384e378"]
snapshot['SourceSnapshots'] = [empty_snapshot_name]
resp = self.post_task("/api/snapshots", json=snapshot)
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/snapshots", json=snapshot)
self.check_task(task)
snapshot.pop('SourceSnapshots')
snapshot.pop('PackageRefs')
resp = self.get("/api/snapshots/" + snapshot_name)
@@ -100,8 +101,8 @@ class SnapshotsAPITestCreateFromRepo(APITest):
snapshot_name = self.random_name()
self.check_equal(self.post("/api/repos", json={"Name": repo_name}).status_code, 201)
resp = self.post_task("/api/repos/" + repo_name + '/snapshots', json={'Name': snapshot_name})
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/repos/" + repo_name + '/snapshots', json={'Name': snapshot_name})
self.check_task(task)
self.check_equal([],
self.get("/api/snapshots/" + snapshot_name + "/packages", params={"format": "details"}).json())
@@ -110,10 +111,11 @@ class SnapshotsAPITestCreateFromRepo(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)
resp = self.post_task("/api/repos/" + repo_name + '/snapshots', json={'Name': snapshot_name})
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/repos/" + repo_name + '/snapshots', json={'Name': snapshot_name})
self.check_task(task)
self.check_equal(self.get("/api/snapshots/" + snapshot_name).status_code, 200)
self.check_subset({'Architecture': 'i386',
@@ -143,13 +145,13 @@ class SnapshotsAPITestCreateUpdate(APITest):
snapshot_desc = {'Description': 'fun snapshot',
'Name': snapshot_name}
resp = self.post_task("/api/snapshots", json=snapshot_desc)
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/snapshots", json=snapshot_desc)
self.check_task(task)
new_snapshot_name = self.random_name()
resp = self.put_task("/api/snapshots/" + snapshot_name, json={'Name': new_snapshot_name,
task = self.put_task("/api/snapshots/" + snapshot_name, json={'Name': new_snapshot_name,
'Description': 'New description'})
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
self.check_task(task)
resp = self.get("/api/snapshots/" + new_snapshot_name)
self.check_equal(resp.status_code, 200)
@@ -176,16 +178,18 @@ class SnapshotsAPITestCreateDelete(APITest):
'Name': snapshot_name}
# deleting unreferenced snapshot
resp = self.post_task("/api/snapshots", json=snapshot_desc)
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/snapshots", json=snapshot_desc)
self.check_task(task)
self.check_equal(self.delete_task("/api/snapshots/" + snapshot_name).json()['State'], TASK_SUCCEEDED)
task = self.delete_task("/api/snapshots/" + snapshot_name)
self.check_task(task)
self.check_equal(self.get("/api/snapshots/" + snapshot_name).status_code, 404)
# deleting referenced snapshot
snap1, snap2 = self.random_name(), self.random_name()
self.check_equal(self.post_task("/api/snapshots", json={"Name": snap1}).json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/snapshots", json={"Name": snap1})
self.check_task(task)
self.check_equal(
self.post_task(
"/api/snapshots", json={"Name": snap2, "SourceSnapshots": [snap1]}
@@ -194,11 +198,12 @@ class SnapshotsAPITestCreateDelete(APITest):
self.check_equal(self.delete_task("/api/snapshots/" + snap1).json()['State'], TASK_FAILED)
self.check_equal(self.get("/api/snapshots/" + snap1).status_code, 200)
self.check_equal(self.delete_task("/api/snapshots/" + snap1, params={"force": "1"}).json()['State'], TASK_SUCCEEDED)
task = self.delete_task("/api/snapshots/" + snap1, params={"force": "1"})
self.check_task(task)
self.check_equal(self.get("/api/snapshots/" + snap1).status_code, 404)
# deleting published snapshot
resp = self.post_task(
task = self.post_task(
"/api/publish",
json={
"SourceKind": "snapshot",
@@ -208,7 +213,7 @@ class SnapshotsAPITestCreateDelete(APITest):
"Signing": DefaultSigningOptions,
}
)
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
self.check_task(task)
self.check_equal(self.delete_task("/api/snapshots/" + snap2).json()['State'], TASK_FAILED)
self.check_equal(self.delete_task("/api/snapshots/" + snap2, params={"force": "1"}).json()['State'], TASK_FAILED)
@@ -228,10 +233,11 @@ class SnapshotsAPITestSearch(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)
resp = self.post_task("/api/repos/" + repo_name + '/snapshots', json={'Name': snapshot_name})
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/repos/" + repo_name + '/snapshots', json={'Name': snapshot_name})
self.check_task(task)
resp = self.get("/api/snapshots/" + snapshot_name + "/packages",
params={"q": "libboost-program-options-dev", "format": "details"})
@@ -262,13 +268,14 @@ class SnapshotsAPITestDiff(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/" + repos[-1] + "/file/" + d).json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/repos/" + repos[-1] + "/file/" + d)
self.check_task(task)
resp = self.post_task("/api/repos/" + repos[-1] + '/snapshots', json={'Name': snapshots[0]})
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/repos/" + repos[-1] + '/snapshots', json={'Name': snapshots[0]})
self.check_task(task)
resp = self.post_task("/api/snapshots", json={'Name': snapshots[1]})
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
task = self.post_task("/api/snapshots", json={'Name': snapshots[1]})
self.check_task(task)
resp = self.get("/api/snapshots/" + snapshots[0] + "/diff/" + snapshots[1])
self.check_equal(resp.status_code, 200)
@@ -302,19 +309,19 @@ class SnapshotsAPITestMerge(APITest):
# create source snapshots
for source in sources:
resp = self.post_task("/api/snapshots", json=source)
self.check_equal(resp.json()["State"], TASK_SUCCEEDED)
task = self.post_task("/api/snapshots", json=source)
self.check_task(task)
# create merge snapshot
merged_name = self.random_name()
resp = self.post_task(
task = self.post_task(
"/api/snapshots/merge",
json={
"Destination": merged_name,
"Sources": [source["Name"] for source in sources],
},
)
self.check_equal(resp.json()["State"], TASK_SUCCEEDED)
self.check_task(task)
# check merge snapshot
resp = self.get(f"/api/snapshots/{merged_name}")
@@ -329,9 +336,8 @@ class SnapshotsAPITestMerge(APITest):
)
# remove merge snapshot
self.check_equal(
self.delete_task(f"/api/snapshots/{merged_name}").json()["State"], TASK_SUCCEEDED
)
task = self.delete_task(f"/api/snapshots/{merged_name}")
self.check_task(task)
# create merge snapshot without sources
merged_name = self.random_name()
+5 -7
View File
@@ -1,4 +1,4 @@
from api_lib import TASK_SUCCEEDED, APITest
from api_lib import APITest
from .publish import DefaultSigningOptions
@@ -49,9 +49,8 @@ class TaskAPITestParallelTasks(APITest):
def _wait_for_task(self, task_id):
uri = "/api/tasks/%d/wait" % int(task_id)
resp = self.get(uri)
self.check_equal(resp.status_code, 200)
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
task = self.get(uri)
self.check_task(task)
def _wait_for_all_tasks(self):
resp = self.get("/api/tasks-wait")
@@ -103,6 +102,5 @@ class TaskAPITestParallelTasks(APITest):
self._wait_for_all_tasks()
for publish_task_id in publish_task_ids:
resp = self.get("/api/tasks/%d" % publish_task_id)
self.check_equal(resp.status_code, 200)
self.check_equal(resp.json()['State'], TASK_SUCCEEDED)
task = self.get("/api/tasks/%d" % publish_task_id)
self.check_task(task)
+10 -1
View File
@@ -6,19 +6,28 @@ import urllib.parse
import urllib.request
from lib import BaseTest
from api_lib import AptlyStream
class UnixSocketAPITest(BaseTest):
aptly_server = None
socket_path = "/tmp/_aptly_test.sock"
base_url = ("unix://%s" % socket_path)
aptly_out = None
debugOutput = True
def prepare(self):
if self.aptly_server is None:
self.aptly_server = self._start_process("aptly api serve -no-lock -listen=%s" % (self.base_url),)
UnixSocketAPITest.aptly_out = AptlyStream()
self.aptly_server = self._start_process("aptly api serve -no-lock -listen=%s" % (self.base_url), stdout=UnixSocketAPITest.aptly_out, stderr=UnixSocketAPITest.aptly_out)
time.sleep(1)
else:
UnixSocketAPITest.aptly_out.clear()
super(UnixSocketAPITest, self).prepare()
def debug_output(self):
return UnixSocketAPITest.aptly_out.get_contents()
def shutdown(self):
if self.aptly_server is not None:
self.aptly_server.terminate()