storj/lib/uplinkc/testdata/bucket_test.c
Michal Niewrzal 90fc1922d0 satellite/metainfo: override bucket RS values with satellite config
Satellite now is keeping RS values for uplink but old uplinks were using
default bucket settings. Because of that we need to override buckets
settings with satellite settings to avoid breaking older uplinks.

Change-Id: Ia1068db70e4adbf741c5e81d27d9e39799049c22
2020-01-28 15:51:04 +00:00

96 lines
3.0 KiB
C

// Copyright (C) 2019 Storj Labs, Inc.
// See LICENSE for copying information.
#include <string.h>
#include <stdlib.h>
#include "require.h"
#include "uplink.h"
#include "helpers.h"
void handle_project(ProjectRef project);
int main(int argc, char *argv[]) {
with_test_project(&handle_project);
}
void handle_project(ProjectRef project) {
char *_err = "";
char **err = &_err;
char *bucket_names[] = {"test-bucket1", "test-bucket2", "test-bucket3", "test-bucket4"};
int num_of_buckets = sizeof(bucket_names) / sizeof(bucket_names[0]);
// TODO: test with different bucket configs
{ // Create buckets
for (int i=0; i < num_of_buckets; i++) {
char *bucket_name = bucket_names[i];
BucketConfig config = test_bucket_config();
BucketInfo info = create_bucket(project, bucket_name, &config, err);
require_noerror(*err);
require(strcmp(bucket_name, info.name) == 0);
require(info.created != 0);
require(config.encryption_parameters.cipher_suite == info.encryption_parameters.cipher_suite);
require(config.encryption_parameters.block_size == info.encryption_parameters.block_size);
// ignore RS values because satellite will override it
free_bucket_info(&info);
}
}
// TODO: test more list options
{ // listing buckets
BucketListOptions list_options = {
.direction = STORJ_FORWARD
};
BucketList bucket_list = list_buckets(project, &list_options, err);
require_noerror(*err);
require(bucket_list.more == 0);
require(bucket_list.length == num_of_buckets);
require(bucket_list.items != NULL);
for(int i = 0; i < bucket_list.length; i++) {
BucketInfo *info = &bucket_list.items[i];
require(strcmp(info->name, bucket_names[i]) == 0);
require(info->created != 0);
}
free_bucket_list(&bucket_list);
}
{ // getting bucket infos
for(int i = 0; i < num_of_buckets; i++) {
char *bucket_name = bucket_names[i];
BucketInfo info = get_bucket_info(project, bucket_name, err);
require_noerror(*err);
require(strcmp(info.name, bucket_names[i]) == 0);
require(info.created != 0);
free_bucket_info(&info);
}
}
{ // encryption context handling
char *enc_ctx = "12VtN2sbbn9PvaEvNbNUBiSKnRcSUNxBADwDWGsPY7UV85e82tT6u";
BucketRef bucket = open_bucket(project, bucket_names[0], enc_ctx, err);
require_noerror(*err);
requiref(bucket._handle != 0, "got empty bucket\n");
// TODO: exercise functions that operate on an open bucket to add assertions
close_bucket(bucket, err);
require_noerror(*err);
}
{ // deleting buckets
for(int i = 0; i < num_of_buckets; i++) {
delete_bucket(project, bucket_names[i], err);
require_noerror(*err);
}
}
}