xref: /rockchip-linux_mpp/mpp/base/test/mpp_cluster_test.c (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
1 /*
2  * Copyright 2021 Rockchip Electronics Co. LTD
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #define MODULE_TAG "mpp_cluster_test"
18 
19 #include "mpp_log.h"
20 #include "mpp_time.h"
21 #include "mpp_common.h"
22 
23 #include "mpp_cluster.h"
24 
25 typedef struct MppTestNode_t {
26     MppNode         node;
27 } MppTestNode;
28 
29 MppTestNode test_node;
30 
mpp_cluster_test_worker(void * param)31 static RK_S32 mpp_cluster_test_worker(void *param)
32 {
33     RK_S32 ret = MPP_NOK;
34     (void) param;
35 
36     mpp_log_f("worker run start\n");
37     mpp_log_f("worker run ret %d\n", ret);
38 
39     return ret;
40 }
41 
main()42 int main()
43 {
44     MPP_RET ret = MPP_OK;
45     MppNode node = test_node.node;
46     RK_U32 total_run = 2;
47 
48     mpp_log("mpp_cluster_test start\n");
49 
50     ret = mpp_node_init(&node);
51     if (ret) {
52         mpp_err("mpp_node_init failed ret %d\n", ret);
53         goto DONE;
54     }
55 
56     mpp_log("mpp_cluster_test init node done\n");
57 
58     /* setup node info */
59     mpp_node_set_func(node, mpp_cluster_test_worker, &test_node);
60 
61     mpp_log("mpp_cluster_test attach node start\n");
62     ret = mpp_node_attach(node, VPU_CLIENT_RKVDEC);
63     if (ret) {
64         mpp_err("mpp_node_attach failed ret %d\n", ret);
65         goto DONE;
66     }
67 
68     mpp_log("mpp_cluster_test trigger start\n");
69 
70     do {
71         ret = mpp_node_trigger(node, 1);
72         if (ret) {
73             mpp_err("mpp_node_trigger failed ret %d\n", ret);
74             goto DONE;
75         }
76 
77         mpp_log("mpp_cluster_test trigger %d left\n", total_run);
78 
79         msleep(5);
80     } while (--total_run);
81 
82     mpp_log("mpp_cluster_test detach start\n");
83 
84     ret = mpp_node_detach(node);
85     if (ret) {
86         mpp_err("mpp_node_detach failed ret %d\n", ret);
87         goto DONE;
88     }
89 
90     mpp_log("mpp_cluster_test deinit start\n");
91 
92     ret = mpp_node_deinit(node);
93     if (ret) {
94         mpp_err("mpp_node_deinit failed ret %d\n", ret);
95         goto DONE;
96     }
97 
98     mpp_log("mpp_cluster_test deinit done\n");
99 
100 DONE:
101     mpp_log("mpp_cluster_test done %s\n", ret ? "failed" : "success");
102     return ret;
103 }
104