commit
0e8b23ff95
|
@ -9,8 +9,8 @@ static rt_bool_t mem_check(rt_uint8_t *ptr, rt_uint8_t value, rt_uint32_t len)
|
|||
{
|
||||
while (len)
|
||||
{
|
||||
if (*ptr != value) return RT_FALSE;
|
||||
|
||||
if (*ptr != value)
|
||||
return RT_FALSE;
|
||||
ptr ++;
|
||||
len --;
|
||||
}
|
||||
|
@ -20,6 +20,7 @@ static rt_bool_t mem_check(rt_uint8_t *ptr, rt_uint8_t value, rt_uint32_t len)
|
|||
|
||||
static void heap_malloc_init()
|
||||
{
|
||||
rt_uint8_t res = TC_STAT_PASSED;
|
||||
rt_uint8_t *ptr1, *ptr2, *ptr3, *ptr4, *ptr5;
|
||||
|
||||
ptr1 = rt_malloc(1);
|
||||
|
@ -33,14 +34,18 @@ static void heap_malloc_init()
|
|||
memset(ptr3, 3, 31);
|
||||
memset(ptr4, 4, 127);
|
||||
|
||||
if (mem_check(ptr1, 1, 1) != RT_FALSE) goto _failed;
|
||||
if (mem_check(ptr2, 2, 13) != RT_FALSE) goto _failed;
|
||||
if (mem_check(ptr3, 3, 31) != RT_FALSE) goto _failed;
|
||||
if (mem_check(ptr4, 4, 127) != RT_FALSE) goto _failed;
|
||||
if (mem_check(ptr1, 1, 1) == RT_FALSE)
|
||||
res = TC_STAT_FAILED;
|
||||
if (mem_check(ptr2, 2, 13) == RT_FALSE)
|
||||
res = TC_STAT_FAILED;
|
||||
if (mem_check(ptr3, 3, 31) == RT_FALSE)
|
||||
res = TC_STAT_FAILED;
|
||||
if (mem_check(ptr4, 4, 127) == RT_FALSE)
|
||||
res = TC_STAT_FAILED;
|
||||
|
||||
rt_free(ptr4);
|
||||
rt_free(ptr3);
|
||||
rt_free(ptr3);
|
||||
rt_free(ptr2);
|
||||
rt_free(ptr1);
|
||||
|
||||
if (ptr5 != RT_NULL)
|
||||
|
@ -48,10 +53,7 @@ static void heap_malloc_init()
|
|||
rt_free(ptr5);
|
||||
}
|
||||
|
||||
tc_done(TC_STAT_PASSED);
|
||||
|
||||
_failed:
|
||||
tc_done(TC_STAT_FAILED);
|
||||
tc_done(res);
|
||||
}
|
||||
|
||||
#ifdef RT_USING_TC
|
||||
|
|
|
@ -20,6 +20,7 @@ static rt_bool_t mem_check(rt_uint8_t *ptr, rt_uint8_t value, rt_uint32_t len)
|
|||
|
||||
static void heap_realloc_init()
|
||||
{
|
||||
rt_uint8_t res = TC_STAT_PASSED;
|
||||
rt_uint8_t *ptr1, *ptr2, *ptr3, *ptr4, *ptr5;
|
||||
|
||||
ptr1 = rt_malloc(1);
|
||||
|
@ -33,36 +34,54 @@ static void heap_realloc_init()
|
|||
memset(ptr3, 3, 31);
|
||||
memset(ptr4, 4, 127);
|
||||
|
||||
if (mem_check(ptr1, 1, 1) != RT_FALSE) goto _failed;
|
||||
if (mem_check(ptr2, 2, 13) != RT_FALSE) goto _failed;
|
||||
if (mem_check(ptr3, 3, 31) != RT_FALSE) goto _failed;
|
||||
if (mem_check(ptr4, 4, 127) != RT_FALSE) goto _failed;
|
||||
if (mem_check(ptr1, 1, 1) == RT_FALSE)
|
||||
{
|
||||
res = TC_STAT_FAILED;
|
||||
goto _free;
|
||||
}
|
||||
if (mem_check(ptr2, 2, 13) == RT_FALSE)
|
||||
{
|
||||
res = TC_STAT_FAILED;
|
||||
goto _free;
|
||||
}
|
||||
if (mem_check(ptr3, 3, 31) == RT_FALSE)
|
||||
{
|
||||
res = TC_STAT_FAILED;
|
||||
goto _free;
|
||||
}
|
||||
if (mem_check(ptr4, 4, 127) == RT_FALSE)
|
||||
{
|
||||
res = TC_STAT_FAILED;
|
||||
goto _free;
|
||||
}
|
||||
|
||||
ptr1 = rt_realloc(ptr1, 13);
|
||||
ptr2 = rt_realloc(ptr2, 31);
|
||||
ptr3 = rt_realloc(ptr3, 127);
|
||||
ptr4 = rt_realloc(ptr4, 1);
|
||||
ptr5 = rt_realloc(ptr5, 0);
|
||||
|
||||
if (mem_check(ptr1, 1, 1) != RT_FALSE) goto _failed;
|
||||
if (mem_check(ptr2, 2, 13) != RT_FALSE) goto _failed;
|
||||
if (mem_check(ptr3, 3, 31) != RT_FALSE) goto _failed;
|
||||
if (mem_check(ptr4, 4, 1) != RT_FALSE) goto _failed;
|
||||
|
||||
rt_free(ptr4);
|
||||
rt_free(ptr3);
|
||||
rt_free(ptr3);
|
||||
rt_free(ptr1);
|
||||
|
||||
if (ptr5 != RT_NULL)
|
||||
if (ptr5)
|
||||
{
|
||||
rt_free(ptr5);
|
||||
rt_kprintf("realloc(ptr, 0) should return NULL\n");
|
||||
res = TC_STAT_FAILED;
|
||||
}
|
||||
|
||||
tc_done(TC_STAT_PASSED);
|
||||
if (mem_check(ptr1, 1, 1) == RT_FALSE)
|
||||
res = TC_STAT_FAILED;
|
||||
if (mem_check(ptr2, 2, 13) == RT_FALSE)
|
||||
res = TC_STAT_FAILED;
|
||||
if (mem_check(ptr3, 3, 31) == RT_FALSE)
|
||||
res = TC_STAT_FAILED;
|
||||
if (mem_check(ptr4, 4, 1) == RT_FALSE)
|
||||
res = TC_STAT_FAILED;
|
||||
|
||||
_failed:
|
||||
tc_done(TC_STAT_FAILED);
|
||||
_free:
|
||||
rt_free(ptr4);
|
||||
rt_free(ptr3);
|
||||
rt_free(ptr2);
|
||||
rt_free(ptr1);
|
||||
|
||||
tc_done(res);
|
||||
}
|
||||
|
||||
#ifdef RT_USING_TC
|
||||
|
|
|
@ -90,13 +90,16 @@ static void _tc_cleanup()
|
|||
/* 调度器上锁,上锁后,将不再切换到其他线程,仅响应中断 */
|
||||
rt_enter_critical();
|
||||
|
||||
if (sem)
|
||||
{
|
||||
rt_sem_delete(sem);
|
||||
sem = RT_NULL;
|
||||
}
|
||||
|
||||
/* 删除线程 */
|
||||
if (tid != RT_NULL && tid->stat != RT_THREAD_CLOSE)
|
||||
{
|
||||
rt_thread_delete(tid);
|
||||
|
||||
/* 删除信号量 */
|
||||
rt_sem_delete(sem);
|
||||
}
|
||||
|
||||
/* 调度器解锁 */
|
||||
|
|
|
@ -100,6 +100,12 @@ static void _tc_cleanup()
|
|||
rt_thread_delete(t2);
|
||||
rt_thread_delete(worker);
|
||||
|
||||
if (sem)
|
||||
{
|
||||
rt_sem_delete(sem);
|
||||
sem = RT_NULL;
|
||||
}
|
||||
|
||||
if (t1_count > t2_count)
|
||||
tc_done(TC_STAT_FAILED);
|
||||
else
|
||||
|
|
|
@ -119,6 +119,10 @@ static void _tc_cleanup()
|
|||
/* 调度器上锁,上锁后,将不再切换到其他线程,仅响应中断 */
|
||||
rt_enter_critical();
|
||||
|
||||
rt_sem_detach(&sem_lock);
|
||||
rt_sem_detach(&sem_empty);
|
||||
rt_sem_detach(&sem_full);
|
||||
|
||||
/* 删除线程 */
|
||||
if (producer_tid != RT_NULL && producer_tid->stat != RT_THREAD_CLOSE)
|
||||
rt_thread_delete(producer_tid);
|
||||
|
|
|
@ -37,34 +37,25 @@ void tc_thread_entry(void* parameter)
|
|||
_tc_current = index->name + 4;
|
||||
rt_kprintf("Run TestCase: %s\n", _tc_current);
|
||||
_tc_stat = TC_STAT_PASSED | TC_STAT_RUNNING;
|
||||
tick = index->func();
|
||||
if (tick > 0)
|
||||
{
|
||||
rt_sem_take(&_tc_sem, tick * _tc_scale);
|
||||
tick = index->func();
|
||||
if (tick > 0)
|
||||
{
|
||||
/* Make sure we are going to be blocked. */
|
||||
rt_sem_control(&_tc_sem, RT_IPC_CMD_RESET, 0);
|
||||
rt_sem_take(&_tc_sem, tick * _tc_scale);
|
||||
}
|
||||
|
||||
if (_tc_cleanup != RT_NULL)
|
||||
{
|
||||
/* perform testcase cleanup */
|
||||
_tc_cleanup();
|
||||
_tc_cleanup = RT_NULL;
|
||||
}
|
||||
if (_tc_cleanup != RT_NULL)
|
||||
{
|
||||
/* perform testcase cleanup */
|
||||
_tc_cleanup();
|
||||
_tc_cleanup = RT_NULL;
|
||||
}
|
||||
|
||||
rt_sem_trytake(&_tc_sem);/* by nl1031 */
|
||||
|
||||
if (_tc_stat & TC_STAT_FAILED)
|
||||
rt_kprintf("TestCase[%s] failed\n", _tc_current);
|
||||
else
|
||||
rt_kprintf("TestCase[%s] passed\n", _tc_current);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_tc_cleanup != RT_NULL)
|
||||
{
|
||||
/* perform testcase cleanup */
|
||||
_tc_cleanup();
|
||||
_tc_cleanup = RT_NULL;
|
||||
}
|
||||
}
|
||||
if (_tc_stat & TC_STAT_FAILED)
|
||||
rt_kprintf("TestCase[%s] failed\n", _tc_current);
|
||||
else
|
||||
rt_kprintf("TestCase[%s] passed\n", _tc_current);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue