Commit Graph

1919 Commits

Author SHA1 Message Date
Andrej Shadura
960cf76c42 Store MD5 in a separate metadata field as well
The S3 backend relies on ETag S3 returns being equal to the MD5 of the
object, but it’s not necessarily true. For that purpose we store the MD5
object in a separate metadata field as well to make sure it isn’t lost.

From https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html:

> The entity tag is a hash of the object. The ETag reflects changes only
> to the contents of an object, not its metadata. The ETag may or may not
> be an MD5 digest of the object data. Whether or not it depends on how
> the object was created and how it is encrypted as described below:
>
> Objects created by the PUT Object, POST Object, or Copy operation,
> or through the AWS Management Console, and are encrypted by SSE-S3 or
> plaintext, have ETags that are an MD5 digest of their object data.
>
> Objects created by the PUT Object, POST Object, or Copy operation,
> or through the AWS Management Console, and are encrypted by SSE-C or
> SSE-KMS, have ETags that are not an MD5 digest of their object data.
>
> If an object is created by either the Multipart Upload or Part Copy
> operation, the ETag is not an MD5 digest, regardless of the method
> of encryption.

Signed-off-by: Andrej Shadura <andrew.shadura@collabora.co.uk>
2021-03-02 13:37:17 +00:00
Lorenzo Bolla
af2564c580 Use newer Go for mod file 2021-02-12 09:23:24 +01:00
Lorenzo Bolla
b385b1e975 Fix test breaking on newer versions of Go
Apparently, Go error message slightly changed in newer versions.
2021-02-12 09:23:24 +01:00
Lorenzo Bolla
ce1d4b852a Test against more recent versions of Go
Run basic tests for all minor versions since 1.11 and full tests for the last
two most recent versions.

Fix #939
2021-02-12 09:23:24 +01:00
Lorenzo Bolla
c43d31f693 Don't fail hard if we can't clean Swift up 2021-02-08 10:52:27 +01:00
Lorenzo Bolla
e4259c5045 Always try to get a version
Even if a simple git hash.
2021-02-08 10:52:27 +01:00
Lorenzo Bolla
993dd2ad1c Print test exception right away, in case the full test run crashes 2021-02-08 10:52:27 +01:00
Lorenzo Bolla
3201244d9b Fix tests and fixtures relying on expired pgp keys
PGP tests relied on expired gpg keys: upgrade with newer Debian keys from
https://ftp-master.debian.org/keys.html.
Download new fixtures files from http://ftp.debian.org/debian/dists/buster/
2021-02-08 10:52:27 +01:00
Lorenzo Bolla
f4dc87fa44 Use a hostname more likely to be non-existent than localhost
Otherwise, it's possible that certain network configuration defining
*.localhost cause the tests to fail.
2021-02-08 10:52:27 +01:00
Don Kuntz
24a027194e Remove unused variable 2019-10-18 18:29:38 +03:00
Don Kuntz
62c4dc1472 Update authors 2019-10-18 18:29:38 +03:00
Don Kuntz
b7f74b4e55 Allow GPGFinder to work with nonstandard GPG version strings
Specifically, I have MacGPG installed instead of upstream GPG, which
results in the version string reading
  gpg (GnuPG/MacGPG2) 2.2.17

instead of the expected
  gpg (GnuPG) 2.2.17
2019-10-18 18:29:38 +03:00
Andrey Smirnov
2da853dcbe Bump golangci-lint to 19.1 2019-09-27 15:44:33 +03:00
Andrey Smirnov
0438a7c76b Upgrade AWS SDK to the latest version 2019-09-27 15:39:48 +03:00
Andrey Smirnov
c86c3a803f Really upgrade goleveldb to the latest master version
PR #876 actually upgraded goleveldb to 1.0.0, not to the latest master.

Recent changes to goleveldb should improve performance
https://github.com/syndtr/goleveldb/issues/226#issuecomment-477568827
2019-09-27 14:19:39 +03:00
Andrey Smirnov
19db62d74f Add new Go modules stuff 2019-09-27 13:59:19 +03:00
Andrey Smirnov
0146411483 Remove vendor/ tree, and dep files 2019-09-27 13:59:19 +03:00
Andrey Smirnov
b731e17850 Update nvidia repo key 2019-09-27 13:01:03 +03:00
Andrey Smirnov
bb66b2296d Vendor update goleveldb
There are number of changes which went in recently which should improve
performance: https://github.com/syndtr/goleveldb/issues/226#issuecomment-477568827
2019-09-18 16:49:50 +04:00
Andrey Smirnov
c75ef8546e Fix system tests for Debian Stretch 9.11 2019-09-18 01:23:58 +03:00
Andrey Smirnov
d80c2b6104 Fix system tests 2019-09-06 23:42:56 +03:00
Andrey Smirnov
ec4bf35647 Regen aptly.1 2019-09-06 23:42:56 +03:00
Raúl Benencia
669d99bebc Update documentation 2019-09-06 23:42:56 +03:00
Raúl Benencia
715af5950f Add suite completion 2019-09-06 23:42:56 +03:00
Raúl Benencia
7a5ac3dbc2 Tests for custom and default suite 2019-09-06 23:42:56 +03:00
Raúl Benencia
ae61cbb4c0 Allow definition of custom Suite 2019-09-06 23:42:56 +03:00
Raphael Medaer
bde6e6bda4 Test dependency architecture without version.
As asked by Andrey in #868.
2019-09-06 15:41:59 +03:00
Raphael Medaer
a656241d5e Parse dependency architecture even without version
This commit closes: #145

The dependency format "pkg:arch" (e.g. "python3:any") was not well
parsed if not any version is given. This commit splits the dependency
name and architecture in all cases.
2019-09-06 15:41:59 +03:00
Andrey Smirnov
7ae5a12f4a Bump Go supported version to 1.11-1.13
This might allow to switch to Go modules as the next step.
2019-09-05 16:41:50 +03:00
Andrey Smirnov
769e984ef4 Fix issues with progress == nil causing panics
Part of PR #459

This prepares for more methods to be exposed via the API.
2019-09-03 20:28:28 +04:00
Frank Steinborn
98e75f6d97 Make database open attempts configurable also via config file 2019-09-03 00:52:24 +03:00
Nabil BENDAFI
586f879e80 [DOC] Note about legacy file structure 2019-09-03 00:23:25 +03:00
Nabil BENDAFI
e2112670bf [DOC] Uploaded package file structure 2019-09-03 00:23:25 +03:00
Andrey Smirnov
060c6669c1 Remove test which relied on now gone mongodb repository
Looks like Mongo doesn't provide any regular structure repository
anymore (only flat one?).
2019-09-02 23:54:07 +03:00
Stephan Eicher
aa02c5cbe9 Fix #827 - passhprase typos 2019-09-02 23:26:37 +03:00
Andrey Smirnov
77d7c3871a Consistently use transactions to update database
For any action which is multi-step (requires updating more than 1 DB
key), use transaction to make update atomic.

Also pack big chunks of updates (importing packages for importing and
mirror updates) into single transaction to improve aptly performance and
get some isolation.

Note that still layers up (Collections) provide some level of isolation,
so this is going to shine with the future PRs to remove collection
locks.

Spin-off of #459
2019-08-11 00:11:53 +03:00
Andrey Smirnov
67e38955ae Refactor database code to support standalone batches, transactions.
This is spin-off of changes from #459.

Transactions are not being used yet, but batches are updated to work
with the new API.

`database/` package was refactored to split abstract interfaces and
implementation via goleveldb. This should make it easier to implement
new database types.
2019-08-09 00:46:40 +03:00
Andrey Smirnov
26098f6c8d Print redirects being followed, drop mirror.yandex.ru.
Use CDN-backed Debian mirror to make tests run faster hopefully for
everyone. Redirects might be important to know what exactly is going on
when items are being downloaded.
2019-08-07 21:10:04 +03:00
Andrey Smirnov
021b6f694b Fix flakey tests related to identity name ordering. 2019-08-07 20:47:52 +03:00
Andrey Smirnov
f0a370db24 Rework HTTP downloader retry logic
Apply retries as global, config-level option `downloadRetries` so that
it can be applied to any aptly command which downloads objects.

Unwrap `errors.Wrap` which is used in downloader.

Unwrap `*url.Error` which should be the actual error returned from the
HTTP client, catch more cases, be more specific around failures.
2019-08-07 20:23:05 +03:00
Andrey Smirnov
2e7f624b34 Add test for publishing with non-empty Origin & Label
See also #848
2019-07-19 22:58:56 +03:00
Shengjing Zhu
b63c0c7dfc Update AUTHORS 2019-07-15 21:51:09 +03:00
Shengjing Zhu
906cbf1e6f Fix time.Time msgpack decoding backwards compatibility
See https://github.com/ugorji/go-codec/issues/269
2019-07-15 21:51:09 +03:00
Shengjing Zhu
5aefc741f2 Add codec tag to fields which are ignored in new codec package
github.com/ugorji/go/codec 1.1.4 ignores field with json:"-" tag
2019-07-15 21:51:09 +03:00
Shengjing Zhu
5c28ea3064 Update github.com/ugorji/go to v1.1.4 2019-07-15 21:51:09 +03:00
Andrey Smirnov
70cd11e30f Revert "Don't remove API file socket if it exists and it's usable"
See PR #807

Fixes: #849

This reverts commit 22848b010d.
2019-07-13 00:45:54 +03:00
Andrey Smirnov
94a72b23ff Update Go AWS SDK to the latest version 2019-07-13 00:19:00 +03:00
Andrey Smirnov
d08be990ef Skip uploading release versions of aptly to nightly repo
This breaks releases, as two versions of the package with same version
might end up in internal.aptly.info.
2019-07-11 01:52:00 +03:00
Andrey Smirnov
ca5b7758ce Print when test is skipped 2019-07-11 00:49:36 +03:00
Andrey Smirnov
bb1def2910 Try Travis on xenial workers 2019-07-11 00:16:20 +03:00