From: Jihoon Lee Date: Mon, 24 Aug 2020 04:39:17 +0000 (+0900) Subject: [UTC][nntrainer][ACR-1579][Add optimizer testcase] X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e99c96b8324933c738e9f4e65a07a974e0137a9e;p=test%2Ftct%2Fnative%2Fapi.git [UTC][nntrainer][ACR-1579][Add optimizer testcase] This patch add test cases for optimizer in nntrainer Change-Id: Ib29eb63aee6950ecff74dbf13c8102bfabd2da91 Signed-off-by: Jihoon Lee --- diff --git a/src/utc/nntrainer/tct-nntrainer-core_mobile.h b/src/utc/nntrainer/tct-nntrainer-core_mobile.h index ca2d29e49..49abf3496 100644 --- a/src/utc/nntrainer/tct-nntrainer-core_mobile.h +++ b/src/utc/nntrainer/tct-nntrainer-core_mobile.h @@ -29,6 +29,16 @@ extern int utc_nntrainer_layer_destroy_n(void); extern int utc_nntrainer_layer_set_property_p(void); extern int utc_nntrainer_layer_set_property_n(void); +extern void utc_nntrainer_optimizer_startup(void); +extern void utc_nntrainer_optimizer_cleanup(void); + +extern int utc_nntrainer_optimizer_create_p(void); +extern int utc_nntrainer_optimizer_create_n(void); +extern int utc_nntrainer_optimizer_destroy_p(void); +extern int utc_nntrainer_optimizer_destroy_n(void); +extern int utc_nntrainer_optimizer_set_property_p(void); +extern int utc_nntrainer_optimizer_set_property_n(void); + testcase tc_array[] = { // layer tcs {"utc_nntrainer_layer_create_p", utc_nntrainer_layer_create_p, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup}, @@ -37,6 +47,13 @@ testcase tc_array[] = { {"utc_nntrainer_layer_destroy_n", utc_nntrainer_layer_destroy_n, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup}, {"utc_nntrainer_layer_set_property_p", utc_nntrainer_layer_set_property_p, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup}, {"utc_nntrainer_layer_set_property_n", utc_nntrainer_layer_set_property_n, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup}, + // optimizer tcs + {"utc_nntrainer_optimizer_create_p", utc_nntrainer_optimizer_create_p, utc_nntrainer_optimizer_startup, utc_nntrainer_optimizer_cleanup}, + {"utc_nntrainer_optimizer_create_n", utc_nntrainer_optimizer_create_n, utc_nntrainer_optimizer_startup, utc_nntrainer_optimizer_cleanup}, + {"utc_nntrainer_optimizer_destroy_p", utc_nntrainer_optimizer_destroy_p, utc_nntrainer_optimizer_startup, utc_nntrainer_optimizer_cleanup}, + {"utc_nntrainer_optimizer_destroy_n", utc_nntrainer_optimizer_destroy_n, utc_nntrainer_optimizer_startup, utc_nntrainer_optimizer_cleanup}, + {"utc_nntrainer_optimizer_set_property_p", utc_nntrainer_optimizer_set_property_p, utc_nntrainer_optimizer_startup, utc_nntrainer_optimizer_cleanup}, + {"utc_nntrainer_optimizer_set_property_n", utc_nntrainer_optimizer_set_property_n, utc_nntrainer_optimizer_startup, utc_nntrainer_optimizer_cleanup}, {NULL, NULL}, }; diff --git a/src/utc/nntrainer/tct-nntrainer-core_tizeniot.h b/src/utc/nntrainer/tct-nntrainer-core_tizeniot.h index 859ed7c09..59ec0b893 100644 --- a/src/utc/nntrainer/tct-nntrainer-core_tizeniot.h +++ b/src/utc/nntrainer/tct-nntrainer-core_tizeniot.h @@ -29,6 +29,16 @@ extern int utc_nntrainer_layer_destroy_n(void); extern int utc_nntrainer_layer_set_property_p(void); extern int utc_nntrainer_layer_set_property_n(void); +extern void utc_nntrainer_optimizer_startup(void); +extern void utc_nntrainer_optimizer_cleanup(void); + +extern int utc_nntrainer_optimizer_create_p(void); +extern int utc_nntrainer_optimizer_create_n(void); +extern int utc_nntrainer_optimizer_destroy_p(void); +extern int utc_nntrainer_optimizer_destroy_n(void); +extern int utc_nntrainer_optimizer_set_property_p(void); +extern int utc_nntrainer_optimizer_set_property_n(void); + testcase tc_array[] = { // layer tcs {"utc_nntrainer_layer_create_p", utc_nntrainer_layer_create_p, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup}, @@ -37,6 +47,13 @@ testcase tc_array[] = { {"utc_nntrainer_layer_destroy_n", utc_nntrainer_layer_destroy_n, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup}, {"utc_nntrainer_layer_set_property_p", utc_nntrainer_layer_set_property_p, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup}, {"utc_nntrainer_layer_set_property_n", utc_nntrainer_layer_set_property_n, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup}, + // optimizer tcs + {"utc_nntrainer_optimizer_create_p", utc_nntrainer_optimizer_create_p, utc_nntrainer_optimizer_startup, utc_nntrainer_optimizer_cleanup}, + {"utc_nntrainer_optimizer_create_n", utc_nntrainer_optimizer_create_n, utc_nntrainer_optimizer_startup, utc_nntrainer_optimizer_cleanup}, + {"utc_nntrainer_optimizer_destroy_p", utc_nntrainer_optimizer_destroy_p, utc_nntrainer_optimizer_startup, utc_nntrainer_optimizer_cleanup}, + {"utc_nntrainer_optimizer_destroy_n", utc_nntrainer_optimizer_destroy_n, utc_nntrainer_optimizer_startup, utc_nntrainer_optimizer_cleanup}, + {"utc_nntrainer_optimizer_set_property_p", utc_nntrainer_optimizer_set_property_p, utc_nntrainer_optimizer_startup, utc_nntrainer_optimizer_cleanup}, + {"utc_nntrainer_optimizer_set_property_n", utc_nntrainer_optimizer_set_property_n, utc_nntrainer_optimizer_startup, utc_nntrainer_optimizer_cleanup}, {NULL, NULL}, }; diff --git a/src/utc/nntrainer/tct-nntrainer-core_tv.h b/src/utc/nntrainer/tct-nntrainer-core_tv.h index 0645d7ff5..6f1126404 100644 --- a/src/utc/nntrainer/tct-nntrainer-core_tv.h +++ b/src/utc/nntrainer/tct-nntrainer-core_tv.h @@ -29,6 +29,16 @@ extern int utc_nntrainer_layer_destroy_n(void); extern int utc_nntrainer_layer_set_property_p(void); extern int utc_nntrainer_layer_set_property_n(void); +extern void utc_nntrainer_optimizer_startup(void); +extern void utc_nntrainer_optimizer_cleanup(void); + +extern int utc_nntrainer_optimizer_create_p(void); +extern int utc_nntrainer_optimizer_create_n(void); +extern int utc_nntrainer_optimizer_destroy_p(void); +extern int utc_nntrainer_optimizer_destroy_n(void); +extern int utc_nntrainer_optimizer_set_property_p(void); +extern int utc_nntrainer_optimizer_set_property_n(void); + testcase tc_array[] = { // layer tcs {"utc_nntrainer_layer_create_p", utc_nntrainer_layer_create_p, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup}, @@ -37,6 +47,13 @@ testcase tc_array[] = { {"utc_nntrainer_layer_destroy_n", utc_nntrainer_layer_destroy_n, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup}, {"utc_nntrainer_layer_set_property_p", utc_nntrainer_layer_set_property_p, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup}, {"utc_nntrainer_layer_set_property_n", utc_nntrainer_layer_set_property_n, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup}, + // optimizer tcs + {"utc_nntrainer_optimizer_create_p", utc_nntrainer_optimizer_create_p, utc_nntrainer_optimizer_startup, utc_nntrainer_optimizer_cleanup}, + {"utc_nntrainer_optimizer_create_n", utc_nntrainer_optimizer_create_n, utc_nntrainer_optimizer_startup, utc_nntrainer_optimizer_cleanup}, + {"utc_nntrainer_optimizer_destroy_p", utc_nntrainer_optimizer_destroy_p, utc_nntrainer_optimizer_startup, utc_nntrainer_optimizer_cleanup}, + {"utc_nntrainer_optimizer_destroy_n", utc_nntrainer_optimizer_destroy_n, utc_nntrainer_optimizer_startup, utc_nntrainer_optimizer_cleanup}, + {"utc_nntrainer_optimizer_set_property_p", utc_nntrainer_optimizer_set_property_p, utc_nntrainer_optimizer_startup, utc_nntrainer_optimizer_cleanup}, + {"utc_nntrainer_optimizer_set_property_n", utc_nntrainer_optimizer_set_property_n, utc_nntrainer_optimizer_startup, utc_nntrainer_optimizer_cleanup}, {NULL, NULL}, }; diff --git a/src/utc/nntrainer/tct-nntrainer-core_wearable.h b/src/utc/nntrainer/tct-nntrainer-core_wearable.h index 6d1393277..00f280511 100644 --- a/src/utc/nntrainer/tct-nntrainer-core_wearable.h +++ b/src/utc/nntrainer/tct-nntrainer-core_wearable.h @@ -29,6 +29,16 @@ extern int utc_nntrainer_layer_destroy_n(void); extern int utc_nntrainer_layer_set_property_p(void); extern int utc_nntrainer_layer_set_property_n(void); +extern void utc_nntrainer_optimizer_startup(void); +extern void utc_nntrainer_optimizer_cleanup(void); + +extern int utc_nntrainer_optimizer_create_p(void); +extern int utc_nntrainer_optimizer_create_n(void); +extern int utc_nntrainer_optimizer_destroy_p(void); +extern int utc_nntrainer_optimizer_destroy_n(void); +extern int utc_nntrainer_optimizer_set_property_p(void); +extern int utc_nntrainer_optimizer_set_property_n(void); + testcase tc_array[] = { // layer tcs {"utc_nntrainer_layer_create_p", utc_nntrainer_layer_create_p, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup}, @@ -37,6 +47,13 @@ testcase tc_array[] = { {"utc_nntrainer_layer_destroy_n", utc_nntrainer_layer_destroy_n, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup}, {"utc_nntrainer_layer_set_property_p", utc_nntrainer_layer_set_property_p, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup}, {"utc_nntrainer_layer_set_property_n", utc_nntrainer_layer_set_property_n, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup}, + // optimizer tcs + {"utc_nntrainer_optimizer_create_p", utc_nntrainer_optimizer_create_p, utc_nntrainer_optimizer_startup, utc_nntrainer_optimizer_cleanup}, + {"utc_nntrainer_optimizer_create_n", utc_nntrainer_optimizer_create_n, utc_nntrainer_optimizer_startup, utc_nntrainer_optimizer_cleanup}, + {"utc_nntrainer_optimizer_destroy_p", utc_nntrainer_optimizer_destroy_p, utc_nntrainer_optimizer_startup, utc_nntrainer_optimizer_cleanup}, + {"utc_nntrainer_optimizer_destroy_n", utc_nntrainer_optimizer_destroy_n, utc_nntrainer_optimizer_startup, utc_nntrainer_optimizer_cleanup}, + {"utc_nntrainer_optimizer_set_property_p", utc_nntrainer_optimizer_set_property_p, utc_nntrainer_optimizer_startup, utc_nntrainer_optimizer_cleanup}, + {"utc_nntrainer_optimizer_set_property_n", utc_nntrainer_optimizer_set_property_n, utc_nntrainer_optimizer_startup, utc_nntrainer_optimizer_cleanup}, {NULL, NULL}, }; diff --git a/src/utc/nntrainer/utc-nntrainer-optimizer.c b/src/utc/nntrainer/utc-nntrainer-optimizer.c new file mode 100644 index 000000000..ee8f04df3 --- /dev/null +++ b/src/utc/nntrainer/utc-nntrainer-optimizer.c @@ -0,0 +1,141 @@ +// +// Copyright (c) 2020 Samsung Electronics Co., Ltd. +// +// Licensed under the Apache License, Version 2.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#include "utc-nntrainer-common.h" + +static int status; +static ml_train_optimizer_h opt; + +/** + * @function utc_nntrainer_optimizer_startup + * @since_tizen 6.0 + * @description Called before each test case + */ +void utc_nntrainer_optimizer_startup(void) +{ + int ret = SYSTEM_INFO_ERROR_NONE; + + ret = check_feature(); + if (ret != SYSTEM_INFO_ERROR_NONE) + { + LOG_I("startup failed because checking feature failed." + "Please note that tct can be run unexpectedly"); + return; + } +} + +/** + * @function utc_nntrainer_optimizer_cleanup + * @since_tizen 6.0 + * @description Called after each test case + */ +void utc_nntrainer_optimizer_cleanup(void) +{ + return; +} + +/** + * @function utc_nntrainer_optimizer_create_p + * @since_tizen 6.0 + * @description create optimizer test + */ +int utc_nntrainer_optimizer_create_p(void) +{ + status = ml_train_optimizer_create(&opt, ML_TRAIN_OPTIMIZER_TYPE_SGD); + ASSERT_STATUS(ML_ERROR_NONE); + + ml_train_optimizer_destroy(opt); + + return 0; +} + +/** + * @function utc_nntrainer_optimizer_create_n + * @since_tizen 6.0 + * @description Test for creating unknown optimizer + */ +int utc_nntrainer_optimizer_create_n(void) +{ + status = ml_train_optimizer_create(&opt, ML_TRAIN_OPTIMIZER_TYPE_UNKNOWN); + ASSERT_STATUS(ML_ERROR_INVALID_PARAMETER); + + return 0; +} + +/** + * @function utc_nntrainer_optimizer_destory_p + * @since_tizen 6.0 + * @description Test for destroying optimizer + */ +int utc_nntrainer_optimizer_destroy_p(void) +{ + ml_train_optimizer_create(&opt , ML_TRAIN_OPTIMIZER_TYPE_SGD); + status = ml_train_optimizer_destroy(opt); + ASSERT_STATUS(ML_ERROR_NONE); + + return 0; +} + +/** + * @function utc_nntrainer_optimizer_destroy_n + * @since_tizen 6.0 + * @description Test for destroying optimizer that is passed to model + */ +int utc_nntrainer_optimizer_destroy_n(void) +{ + ml_train_model_h model; + ml_train_model_construct(&model); + ml_train_optimizer_create(&opt, ML_TRAIN_OPTIMIZER_TYPE_ADAM); + + ml_train_model_set_optimizer(model, opt); + + status = ml_train_optimizer_destroy(opt); + ASSERT_STATUS(ML_ERROR_INVALID_PARAMETER); + + ml_train_model_destroy(model); + + return 0; +} + +/** + * @function utc_nntrainer_optimizer_set_property_p + * @since_tizen 6.0 + * @description Test for setting property + */ +int utc_nntrainer_optimizer_set_property_p(void) +{ + ml_train_optimizer_create(&opt, ML_TRAIN_OPTIMIZER_TYPE_ADAM); + status = ml_train_optimizer_set_property(opt, "beta1=0.002", "beta2=0.001", NULL); + ASSERT_STATUS(ML_ERROR_NONE); + + ml_train_optimizer_destroy(opt); + return 0; +} + +/** + * @function utc_nntrainer_optimizer_set_property_n + * @since_tizen 6.0 + * @description Test for setting invalid property + */ +int utc_nntrainer_optimizer_set_property_n(void) +{ + ml_train_optimizer_create(&opt, ML_TRAIN_OPTIMIZER_TYPE_ADAM); + status = ml_train_optimizer_set_property(opt, "invalid_property_key=invalid_property_value", NULL); + ASSERT_STATUS(ML_ERROR_INVALID_PARAMETER); + ml_train_optimizer_destroy(opt); + + return 0; +}