91    if (!strcmp(
type, 
"bucket")) {
 
   93    } 
else if (!strcmp(
type, 
"file")) {
 
 
  137        info->name = 
"bucket_scheme_register_unregister";
 
  138        info->category = 
"/main/bucket/";
 
  139        info->summary = 
"bucket scheme registration/unregistration unit test";
 
  141            "Test registration and unregistration of bucket scheme";
 
 
  166        info->name = 
"bucket_alloc";
 
  167        info->category = 
"/main/bucket/";
 
  168        info->summary = 
"bucket allocation unit test";
 
  170            "Test allocation of buckets";
 
  192    if (strcmp(bucket->scheme, 
"test")) {
 
 
  207        info->name = 
"bucket_create";
 
  208        info->category = 
"/main/bucket/";
 
  209        info->summary = 
"bucket creation unit test";
 
  211            "Test creation of buckets";
 
 
  251        info->name = 
"bucket_clone";
 
  252        info->category = 
"/main/bucket/";
 
  253        info->summary = 
"bucket clone unit test";
 
  255            "Test cloning a bucket";
 
  282    ast_test_validate(
test, bucket->scheme_impl == clone->scheme_impl);
 
  283    ast_test_validate(
test, strcmp(bucket->scheme, clone->scheme) == 0);
 
 
  294        info->name = 
"bucket_delete";
 
  295        info->category = 
"/main/bucket/";
 
  296        info->summary = 
"bucket deletion unit test";
 
  298            "Test deletion of buckets";
 
 
  337        info->name = 
"bucket_is_stale";
 
  338        info->category = 
"/main/bucket/";
 
  339        info->summary = 
"bucket staleness unit test";
 
  341            "Test if staleness of a bucket is reported correctly";
 
 
  371        info->name = 
"bucket_json";
 
  372        info->category = 
"/main/bucket/";
 
  373        info->summary = 
"bucket json unit test";
 
  375            "Test creation of JSON for a bucket";
 
  389    expected = 
ast_json_pack(
"{s: s, s: s, s: [s], s: s, s: [s], s: s}",
 
  390        "modified", 
"0.000000", 
"created", 
"0.000000",
 
  391        "buckets", 
"test:///tmp/bob/joe",
 
  393        "files", 
"test:///tmp/bob/recording.wav",
 
  394        "id", 
"test:///tmp/bob");
 
 
  420        info->name = 
"bucket_retrieve";
 
  421        info->category = 
"/main/bucket/";
 
  422        info->summary = 
"bucket retrieval unit test";
 
  424            "Test retrieval of buckets";
 
 
  444        info->name = 
"bucket_file_alloc";
 
  445        info->category = 
"/main/bucket/";
 
  446        info->summary = 
"bucket file allocation unit test";
 
  448            "Test allocation of bucket files";
 
  475    if (strcmp(file->scheme, 
"test")) {
 
 
  490        info->name = 
"bucket_file_create";
 
  491        info->category = 
"/main/bucket/";
 
  492        info->summary = 
"file creation unit test";
 
  494            "Test creation of files";
 
 
  534        info->name = 
"bucket_file_clone";
 
  535        info->category = 
"/main/bucket/";
 
  536        info->summary = 
"file clone unit test";
 
  538            "Test cloning a file";
 
  566    ast_test_validate(
test, file->scheme_impl == clone->scheme_impl);
 
  567    ast_test_validate(
test, strcmp(file->scheme, clone->scheme) == 0);
 
 
  578    struct stat old, new;
 
  583        info->name = 
"bucket_file_copy";
 
  584        info->category = 
"/main/bucket/";
 
  585        info->summary = 
"bucket file copying unit test";
 
  587            "Test copying of bucket files";
 
  600    if (!(temporary = fopen(file->path, 
"w"))) {
 
  605    fprintf(temporary, 
"bob");
 
  614    if (stat(file->path, &old)) {
 
  619    if (stat(
copy->path, &
new)) {
 
  624    if (old.st_size != 
new.st_size) {
 
  640    if (strcmp(metadata->value, 
"joe")) {
 
 
  654        info->name = 
"bucket_file_retrieve";
 
  655        info->category = 
"/main/bucket/";
 
  656        info->summary = 
"file retrieval unit test";
 
  658            "Test retrieval of files";
 
 
  678        info->name = 
"bucket_file_update";
 
  679        info->category = 
"/main/bucket/";
 
  680        info->summary = 
"file updating unit test";
 
  682            "Test updating of files";
 
 
  721        info->name = 
"bucket_file_delete";
 
  722        info->category = 
"/main/bucket/";
 
  723        info->summary = 
"file deletion unit test";
 
  725            "Test deletion of files";
 
 
  764        info->name = 
"bucket_file_is_stale";
 
  765        info->category = 
"/main/bucket/";
 
  766        info->summary = 
"file staleness unit test";
 
  768            "Test if staleness of a bucket file is reported correctly";
 
 
  797        info->name = 
"bucket_file_metadata_set";
 
  798        info->category = 
"/main/bucket/";
 
  799        info->summary = 
"file metadata setting unit test";
 
  801            "Test setting of metadata on files";
 
  828    if (strcmp(metadata->value, 
"joe")) {
 
  847    if (strcmp(metadata->value, 
"fred")) {
 
 
  863        info->name = 
"bucket_file_metadata_unset";
 
  864        info->category = 
"/main/bucket/";
 
  865        info->summary = 
"file metadata unsetting unit test";
 
  867            "Test unsetting of metadata on files";
 
 
  903        info->name = 
"bucket_file_metadata_get";
 
  904        info->category = 
"/main/bucket/";
 
  905        info->summary = 
"file metadata getting unit test";
 
  907            "Test getting of metadata on files";
 
  928    if (strcmp(metadata->value, 
"joe")) {
 
 
  945        info->name = 
"bucket_file_json";
 
  946        info->category = 
"/main/bucket/";
 
  947        info->summary = 
"file json unit test";
 
  949            "Test creation of JSON for a file";
 
  965    expected = 
ast_json_pack(
"{s: s, s: s, s: s, s: s, s: {s :s}}",
 
  966        "modified", 
"0.000000", 
"created", 
"0.000000", 
"scheme", 
"test",
 
  967        "id", 
"test:///tmp/bob", 
"metadata", 
"bob", 
"joe");
 
 
 1014        ast_log(
LOG_ERROR, 
"Failed to register Bucket test wizard scheme implementation\n");
 
 
static int copy(char *infile, char *outfile)
Utility function to copy a file.
Asterisk main include file. File version handling, generic pbx functions.
int ao2_container_count(struct ao2_container *c)
Returns the number of elements in a container.
#define ao2_find(container, arg, flags)
static void * bucket_file_alloc(const char *name)
Allocator for bucket files.
static void * bucket_alloc(const char *name)
Allocator for buckets.
struct ast_bucket * ast_bucket_alloc(const char *uri)
Allocate a new bucket.
struct ast_bucket_file * ast_bucket_file_clone(struct ast_bucket_file *file)
Clone a bucket file.
int ast_bucket_file_metadata_set(struct ast_bucket_file *file, const char *name, const char *value)
Set a metadata attribute on a file to a specific value.
struct ast_bucket_file * ast_bucket_file_alloc(const char *uri)
Allocate a new bucket file.
#define ast_bucket_scheme_register(name, bucket, file, create_cb, destroy_cb)
Register support for a specific scheme.
int ast_bucket_file_temporary_create(struct ast_bucket_file *file)
Common file snapshot creation callback for creating a temporary file.
int ast_bucket_create(struct ast_bucket *bucket)
Create a new bucket in backend storage.
int ast_bucket_file_create(struct ast_bucket_file *file)
Create a new bucket file in backend storage.
int ast_bucket_file_metadata_unset(struct ast_bucket_file *file, const char *name)
Unset a specific metadata attribute on a file.
int ast_bucket_file_update(struct ast_bucket_file *file)
Update an existing bucket file in backend storage.
struct ast_bucket_metadata * ast_bucket_file_metadata_get(struct ast_bucket_file *file, const char *name)
Retrieve a metadata attribute from a file.
struct ast_bucket_file * ast_bucket_file_copy(struct ast_bucket_file *file, const char *uri)
Copy a bucket file to a new URI.
int ast_bucket_is_stale(struct ast_bucket *bucket)
Retrieve whether or not the backing datastore views the bucket as stale.
struct ast_bucket_file * ast_bucket_file_retrieve(const char *uri)
Retrieve a bucket file.
struct ast_bucket * ast_bucket_retrieve(const char *uri)
Retrieve information about a bucket.
int ast_bucket_file_delete(struct ast_bucket_file *file)
Delete a bucket file from backend storage.
struct ast_json * ast_bucket_json(const struct ast_bucket *bucket)
Get a JSON representation of a bucket.
struct ast_json * ast_bucket_file_json(const struct ast_bucket_file *file)
Get a JSON representation of a bucket file.
struct ast_bucket * ast_bucket_clone(struct ast_bucket *bucket)
Clone a bucket.
void ast_bucket_file_temporary_destroy(struct ast_bucket_file *file)
Common file snapshot destruction callback for deleting a temporary file.
int ast_bucket_file_is_stale(struct ast_bucket_file *file)
Retrieve whether or not the backing datastore views the bucket file as stale.
int ast_bucket_delete(struct ast_bucket *bucket)
Delete a bucket from backend storage.
Generic File Format Support. Should be included by clients of the file handling routines....
Support for logging to various files, console and syslog Configuration in file logger....
Asterisk JSON abstraction layer.
void ast_json_unref(struct ast_json *value)
Decrease refcount on value. If refcount reaches zero, value is freed.
int ast_json_equal(const struct ast_json *lhs, const struct ast_json *rhs)
Compare two JSON objects.
struct ast_json * ast_json_pack(char const *format,...)
Helper for creating complex JSON values.
Asterisk module definitions.
#define AST_MODULE_INFO_STANDARD(keystr, desc)
#define ASTERISK_GPL_KEY
The text the key() function should return.
@ AST_MODULE_LOAD_SUCCESS
@ AST_MODULE_LOAD_DECLINE
Module has failed to load, may be in an inconsistent state.
static struct ast_sorcery * sorcery
const char * ast_sorcery_object_get_id(const void *object)
Get the unique identifier of a sorcery object.
static force_inline int attribute_pure ast_strlen_zero(const char *s)
int ast_str_container_add(struct ao2_container *str_container, const char *add)
Adds a string to a string container allocated by ast_str_container_alloc.
Bucket file structure, contains reference to file and information about it.
Bucket structure, contains other buckets and files.
Abstract JSON element (object, array, string, int, ...).
Interface for a sorcery wizard.
const char * name
Name of the wizard.
Full structure for sorcery.
Test state structure for scheme wizards.
unsigned int updated
Whether the object has been updated or not.
unsigned int is_stale
Whether the object is stale or not.
unsigned int deleted
Whether the object has been deleted or not.
unsigned int created
Whether the object has been created or not.
#define AST_TEST_REGISTER(cb)
#define ast_test_status_update(a, b, c...)
#define AST_TEST_UNREGISTER(cb)
#define AST_TEST_DEFINE(hdr)
static struct ast_sorcery_wizard bucket_file_test_wizard
static void * bucket_test_wizard_retrieve_id(const struct ast_sorcery *sorcery, void *data, const char *type, const char *id)
static int bucket_test_wizard_create(const struct ast_sorcery *sorcery, void *data, void *object)
static int bucket_test_wizard_update(const struct ast_sorcery *sorcery, void *data, void *object)
static int bucket_test_wizard_delete(const struct ast_sorcery *sorcery, void *data, void *object)
static void bucket_test_wizard_clear(void)
static struct bucket_test_state bucket_test_wizard_state
Global scope structure for testing bucket wizards.
static int bucket_test_wizard_is_stale(const struct ast_sorcery *sorcery, void *data, void *object)
static int load_module(void)
static int unload_module(void)
static struct ast_sorcery_wizard bucket_test_wizard
#define RAII_VAR(vartype, varname, initval, dtor)
Declare a variable that will call a destructor function when it goes out of scope.