}
/** configuration to fill the model meta */
-#define OFFSET_SIZE 8
#define MAGICCODE 0x10101101
static const hostHandlerInfo *host_handle = NULL;
void *ptr;
npubin_meta meta;
+ /** it's dummay metdata; so output result is not checked */
meta.magiccode = MAGICCODE;
meta.model_id = model_num;
meta.model_version = model_num;
- meta.size = OFFSET_SIZE;
- meta.buffer_size = OFFSET_SIZE;
- meta.input_offset = OFFSET_SIZE;
- meta.output_offset = OFFSET_SIZE;
- meta.input_size = OFFSET_SIZE;
- meta.output_size = OFFSET_SIZE;
+ meta.size = NPUBIN_META_SIZE * 3;
+ meta.buffer_size = NPUBIN_META_SIZE;
+ meta.input_offset = 0;
+ meta.output_offset = 0;
+ meta.input_size = NPUBIN_META_SIZE;
+ meta.output_size = NPUBIN_META_SIZE;
meta.type = SMODEL_OPS_NPU;
- meta.program_size = OFFSET_SIZE;
- meta.weight_size = OFFSET_SIZE;
+ meta.program_size = NPUBIN_META_SIZE;
+ meta.weight_size = NPUBIN_META_SIZE;
EXPECT_EQ (hwmem_activate(mem), 0);
EXPECT_EQ (hwmem_get_data(mem, &ptr), 0);
EXPECT_EQ (init_ne_handler(), 0);
- ASSERT_EQ (GET_MEM()->alloc (NPUBIN_META_SIZE, &mem[0]), 0);
+ ASSERT_EQ (GET_MEM()->alloc (NPUBIN_META_SIZE * 3, &mem[0]), 0);
ASSERT_EQ (generate_model (mem[0], 0), 0);
- ASSERT_EQ (GET_MEM()->alloc (NPUBIN_META_SIZE, &mem[1]), 0);
+ ASSERT_EQ (GET_MEM()->alloc (NPUBIN_META_SIZE * 3, &mem[1]), 0);
ASSERT_EQ (generate_model (mem[1], 1), 0);
/** verify registraion and unregistration */
void *ptr[2];
int err;
buffer *buffer_ptr;
- buffer_state state;
- uint64_t buffer_size = 100;
EXPECT_EQ (init_ne_handler(), 0);
- ASSERT_EQ (GET_MEM()->alloc (NPUBIN_META_SIZE, &mem[0]), 0);
+ ASSERT_EQ (GET_MEM()->alloc (NPUBIN_META_SIZE * 3, &mem[0]), 0);
ASSERT_EQ (generate_model (mem[0], 0), 0);
- ASSERT_EQ (GET_MEM()->alloc (NPUBIN_META_SIZE, &mem[1]), 0);
+ ASSERT_EQ (GET_MEM()->alloc (NPUBIN_META_SIZE * 3, &mem[1]), 0);
ASSERT_EQ (generate_model (mem[1], 1), 0);
/** registerModel() activates its hwmem */
EXPECT_EQ (host_handle->setOpMode(NPUINPUT_HOST, true, id[1], version[1],
test_cb, ptr[1]), 0);
- GET_MEM()->resize_buffers(buffer_size);
+ GET_MEM()->resize_buffers(NPUBIN_META_SIZE * 2);
buffer_ptr = host_handle->getCurrentInputBuffer(NPUASYNC_WAIT, &err);
EXPECT_EQ (err, 0);
EXPECT_EQ (host_handle->validateBuffer(buffer_ptr), 0);
EXPECT_EQ (host_handle->setOpMode(NPUINPUT_STOP, true, id[1], version[1],
test_cb, ptr[1]), 0);
- /** clear up the buffer */
- buffer_ptr = GET_MEM()->get_next_buffer(NPUASYNC_WAIT, BUFFER_ROLE_OUTPUT, &err);
- EXPECT_EQ (err, 0);
- /** change to EMPTY */
- EXPECT_EQ (GET_MEM()->return_buffer(buffer_ptr), 0);
- state = buffer_get_state (buffer_ptr);
- EXPECT_EQ (state, BUFFER_STATE_EMPTY);
-
/** unregisterModel() deactivates its hwmem */
EXPECT_EQ (host_handle->unregisterModel(id[0], version[0]), 0);
EXPECT_EQ (host_handle->unregisterModel(id[1], version[1]), 0);
}
/** configuration to fill the model meta */
-#define OFFSET_SIZE 8
#define MAGICCODE 0x10101101
#define STOP_SLEEP 1
#define SLEEP_DURATION 2
/** mutex for syncing and callback count verification */
static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
+static pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
static int callback_count;
/**
EXPECT_NE (meta, nullptr);
memset(meta, 0, sizeof (npubin_meta));
meta->magiccode = MAGICCODE;
- meta->buffer_size = OFFSET_SIZE;
- meta->input_offset = OFFSET_SIZE;
- meta->output_offset = OFFSET_SIZE;
- meta->input_size = OFFSET_SIZE;
- meta->output_size = OFFSET_SIZE;
+ meta->size = NPUBIN_META_SIZE * 3;
+ meta->buffer_size = NPUBIN_META_SIZE;
+ meta->input_offset = 0;
+ meta->output_offset = 0;
+ meta->input_size = NPUBIN_META_SIZE;
+ meta->output_size = NPUBIN_META_SIZE;
meta->type = SMODEL_OPS_NPU;
- meta->program_size = OFFSET_SIZE;
- meta->weight_size = OFFSET_SIZE;
+ meta->program_size = NPUBIN_META_SIZE;
+ meta->weight_size = NPUBIN_META_SIZE;
model_ptr->meta = meta;
model_ptr->memblock = mem;
EXPECT_EQ (model_ptr->meta->magiccode, MAGICCODE);
pthread_mutex_lock (&mutex);
callback_count += 1;
+ pthread_cond_broadcast (&cond);
pthread_mutex_unlock (&mutex);
buffer_ptr = GET_MEM()->get_next_buffer(NPUASYNC_WAIT, BUFFER_ROLE_OUTPUT, &err);
model *model_ptr;
hwmem *mem;
- ASSERT_EQ (GET_MEM()->alloc (3 * 1000, &mem), 0);
+ ASSERT_EQ (GET_MEM()->alloc (NPUBIN_META_SIZE * 3, &mem), 0);
model_ptr = generate_model (mem);
ASSERT_NE (model_ptr, nullptr);
int err;
int size;
- size = 3 * 1000;
+ size = NPUBIN_META_SIZE * 3;
ASSERT_EQ (GET_MEM()->alloc (size, &mem), 0);
model_ptr = generate_model (mem);
/** correct start device */
EXPECT_EQ (n4_start (SMODEL_OPS_NPU), 0);
/** setup data */
- GET_MEM()->resize_buffers(2);
+ GET_MEM()->resize_buffers(NPUBIN_META_SIZE * 5);
buffer_ptr = GET_MEM()->get_next_buffer(NPUASYNC_WAIT, BUFFER_ROLE_INPUT, &err);
EXPECT_EQ (err, 0);
EXPECT_EQ (GET_MEM()->return_buffer(buffer_ptr), 0);
/** correct start device */
EXPECT_EQ (n4_start (SMODEL_OPS_NPU), 0);
/** setup data */
- GET_MEM()->resize_buffers(2);
+ GET_MEM()->resize_buffers(NPUBIN_META_SIZE * 4);
buffer_ptr = GET_MEM()->get_next_buffer(NPUASYNC_WAIT, BUFFER_ROLE_INPUT, &err);
EXPECT_EQ (err, 0);
EXPECT_EQ (GET_MEM()->return_buffer(buffer_ptr), 0);
/** correct start device */
EXPECT_EQ (n4_start (SMODEL_OPS_NPU), 0);
/** setup data */
- GET_MEM()->resize_buffers(2);
+ GET_MEM()->resize_buffers(NPUBIN_META_SIZE * 3);
buffer_ptr = GET_MEM()->get_next_buffer(NPUASYNC_WAIT, BUFFER_ROLE_INPUT, &err);
EXPECT_EQ (GET_MEM()->return_buffer(buffer_ptr), 0);
/** call n4_dataReady() here */
int err, size, idx;
int num_callbacks;
- size = 3 * 1000;
- pthread_mutex_lock (&mutex);
- callback_count = 0;
- pthread_mutex_unlock (&mutex);
+ size = NPUBIN_META_SIZE * 3;
num_callbacks = 10;
ASSERT_EQ (GET_MEM()->alloc (size, &mem), 0);
/** correct start device */
EXPECT_EQ (n4_start (SMODEL_OPS_NPU), 0);
- GET_MEM()->resize_buffers(2);
+ GET_MEM()->resize_buffers(NPUBIN_META_SIZE * 2);
+
+ pthread_mutex_lock (&mutex);
+ callback_count = 0;
+ pthread_mutex_unlock (&mutex);
for (idx = 0; idx < num_callbacks; idx ++) {
/** setup data */
EXPECT_EQ (n4_dataReady(), 0);
}
- /** let all the callbacks be called */
- sleep(SLEEP_DURATION);
- /** correct stopping device */
- EXPECT_EQ (n4_stop (SMODEL_OPS_NPU, STOP_WAIT), 0);
- /** let stop be in effect and all the threads conclude */
- sleep(STOP_SLEEP);
+ pthread_mutex_lock (&mutex);
+ while (callback_count != num_callbacks)
+ pthread_cond_wait (&cond, &mutex);
+ pthread_mutex_unlock (&mutex);
EXPECT_EQ (callback_count, num_callbacks);
+ EXPECT_EQ (n4_stop (SMODEL_OPS_NPU, STOP_WAIT), 0);
+
destroy_model(model_ptr);
GET_MEM()->dealloc (mem);
}