CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
135 lines
2.7 KiB
C++
135 lines
2.7 KiB
C++
// RUN: %clangxx -O0 -g %s -o %t && %run %t 2>&1 | FileCheck %s
|
|
|
|
#include <sys/param.h>
|
|
|
|
#include <sys/types.h>
|
|
|
|
#include <sys/mman.h>
|
|
#include <sys/stat.h>
|
|
|
|
#include <assert.h>
|
|
#include <cdbr.h>
|
|
#include <cdbw.h>
|
|
#include <fcntl.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <unistd.h>
|
|
|
|
static char *name;
|
|
|
|
const char data1[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07};
|
|
const char data2[] = {0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17};
|
|
const char key1[] = {0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27};
|
|
const char key2[] = {0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37};
|
|
|
|
void test_cdbw() {
|
|
uint32_t idx;
|
|
|
|
struct cdbw *cdbw = cdbw_open();
|
|
assert(cdbw);
|
|
|
|
int rv = cdbw_put_data(cdbw, data1, __arraycount(data1), &idx);
|
|
assert(!rv);
|
|
|
|
rv = cdbw_put_key(cdbw, key1, __arraycount(key1), idx);
|
|
assert(!rv);
|
|
|
|
rv = cdbw_put(cdbw, key2, __arraycount(key2), data2, __arraycount(data2));
|
|
assert(!rv);
|
|
|
|
name = strdup("/tmp/temp.XXXXXX");
|
|
assert(name);
|
|
|
|
name = mktemp(name);
|
|
assert(name);
|
|
|
|
int fd = open(name, O_RDWR | O_CREAT, 0644);
|
|
assert(fd != -1);
|
|
|
|
cdbw_output(cdbw, fd, "TEST1", cdbw_stable_seeder);
|
|
|
|
cdbw_close(cdbw);
|
|
|
|
rv = close(fd);
|
|
assert(rv != -1);
|
|
}
|
|
|
|
void test_cdbr1() {
|
|
struct cdbr *cdbr = cdbr_open(name, CDBR_DEFAULT);
|
|
assert(cdbr);
|
|
|
|
uint32_t idx = cdbr_entries(cdbr);
|
|
assert(idx > 0);
|
|
printf("entries: %" PRIu32 "\n", idx);
|
|
|
|
const void *data;
|
|
size_t data_len;
|
|
int rv = cdbr_get(cdbr, idx - 1, &data, &data_len);
|
|
assert(rv == 0);
|
|
|
|
printf("data: ");
|
|
for (size_t i = 0; i < data_len; i++)
|
|
printf("%02" PRIx8, ((uint8_t *)data)[i]);
|
|
printf("\n");
|
|
|
|
rv = cdbr_find(cdbr, key1, __arraycount(key1), &data, &data_len);
|
|
|
|
printf("data: ");
|
|
for (size_t i = 0; i < data_len; i++)
|
|
printf("%02" PRIx8, ((uint8_t *)data)[i]);
|
|
printf("\n");
|
|
|
|
cdbr_close(cdbr);
|
|
}
|
|
|
|
#define COOKIE ((void *)1)
|
|
|
|
static void cdbr_unmap(void *cookie, void *base, size_t sz) {
|
|
assert(cookie == COOKIE);
|
|
int rv = munmap(base, sz);
|
|
assert(rv != -1);
|
|
}
|
|
|
|
void test_cdbr2() {
|
|
struct stat sb;
|
|
|
|
int fd = open(name, O_RDONLY);
|
|
assert(fd != -1);
|
|
|
|
int rv = fstat(fd, &sb);
|
|
assert(rv != -1);
|
|
|
|
size_t sz = sb.st_size;
|
|
assert(sz < SSIZE_MAX);
|
|
|
|
void *base = mmap(NULL, sz, PROT_READ, MAP_FILE | MAP_SHARED, fd, 0);
|
|
assert(base != MAP_FAILED);
|
|
|
|
rv = close(fd);
|
|
assert(rv != -1);
|
|
|
|
struct cdbr *cdbr = cdbr_open_mem(base, sz, CDBR_DEFAULT, cdbr_unmap, COOKIE);
|
|
assert(cdbr);
|
|
|
|
printf("entries: %" PRIu32 "\n", cdbr_entries(cdbr));
|
|
|
|
cdbr_close(cdbr);
|
|
}
|
|
|
|
int main(void) {
|
|
printf("cdb\n");
|
|
|
|
test_cdbw();
|
|
test_cdbr1();
|
|
test_cdbr2();
|
|
|
|
// CHECK: cdb
|
|
// CHECK: entries: 2
|
|
// CHECK: data: 1011121314151617
|
|
// CHECK: data: 0001020304050607
|
|
// CHECK: entries: 2
|
|
|
|
return 0;
|
|
}
|