1 /*
2 * Copyright (c) 2021 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include <cstdio>
17 #include <cstring>
18 #include <unistd.h>
19 #include <gtest/gtest.h>
20 #include "securec.h"
21 #include "usb_utils.h"
22
23 using namespace std;
24 using namespace testing::ext;
25
26 namespace {
27 const string RLOG_FILE = "/data/acm_read_xts";
28
29 class UsbHostRawApiFuncTest : public testing::Test {
30 protected:
SetUpTestCase(void)31 static void SetUpTestCase(void)
32 {
33 printf("------start UsbHostRawApiFuncTest------\n");
34 system("cat /dev/null > /data/acm_write_xts");
35 system("cat /dev/null > /data/acm_read_xts");
36 }
TearDownTestCase(void)37 static void TearDownTestCase(void)
38 {
39 printf("------end UsbHostRawApiFuncTest------\n");
40 }
41 };
42
43 /**
44 * @tc.number : H_Lx_H_Sub_usb_IO read_001,H_Lx_H_Sub_usb_IO read_007
45 * @tc.name : USB串口同步数据读写
46 * @tc.size : MEDIUM
47 * @tc.type : FUNC
48 * @tc.level : Level 1
49 */
HWTEST_F(UsbHostRawApiFuncTest, CheckRawApiWriteSync_001, TestSize.Level1)50 HWTEST_F(UsbHostRawApiFuncTest, CheckRawApiWriteSync_001, TestSize.Level1)
51 {
52 printf("------start CheckRawApiWriteSync_001------\n");
53 const string data = "abc";
54 double startTs = GetNowTs();
55 string wlog, rlog;
56 wlog = "send data[" + data + "] to device";
57 rlog = "recv data[" + data + "] from device";
58 ASSERT_EQ(system("usbhost_ddk_test -aR &"), 0);
59 ASSERT_EQ(system(("usbhost_ddk_test -aW '" + data + "'").c_str()), 0);
60 sleep(3);
61 EXPECT_TRUE(HasLog(wlog, startTs)) << "ErrInfo: cannot find sync write log";
62 EXPECT_TRUE(HasLog(rlog, startTs, RLOG_FILE)) << "ErrInfo: cannot find sync recv log";
63 printf("------end CheckRawApiWriteSync_001------\n");
64 }
65
66 /**
67 * @tc.number : H_Lx_H_Sub_usb_IO read_001,H_Lx_H_Sub_usb_IO read_007
68 * @tc.name : USB串口同步数据读写
69 * @tc.size : MEDIUM
70 * @tc.type : FUNC
71 * @tc.level : Level 1
72 */
HWTEST_F(UsbHostRawApiFuncTest, CheckRawApiWriteSync_002, TestSize.Level1)73 HWTEST_F(UsbHostRawApiFuncTest, CheckRawApiWriteSync_002, TestSize.Level1)
74 {
75 printf("------start CheckRawApiWriteSync_002------\n");
76 const string data[] = {
77 "0123456789",
78 "Z",
79 "0!a@1#b$2%c^3&D*4(E)5-F_",
80 ""
81 };
82 double startTs = GetNowTs();
83 string wlog, rlog;
84 for (int32_t i = 0; data[i].size() > 0; i++) {
85 wlog = "send data[" + data[i] + "] to device";
86 rlog = "recv data[" + data[i] + "] from device";
87 ASSERT_EQ(system("usbhost_ddk_test -aR &"), 0);
88 ASSERT_EQ(system(("usbhost_ddk_test -aW '" + data[i] + "'").c_str()), 0);
89 sleep(3);
90 EXPECT_TRUE(HasLog(wlog, startTs)) << "ErrInfo: cannot find sync write log";
91 EXPECT_TRUE(HasLog(rlog, startTs, RLOG_FILE)) << "ErrInfo: cannot find sync recv log";
92 }
93 printf("------end CheckRawApiWriteSync_002------\n");
94 }
95
96 /**
97 * @tc.number : H_Lx_H_Sub_usb_IO read_003, H_Lx_H_Sub_usb_IO read_009
98 * @tc.name : USB串口同步读写1KB数据
99 * @tc.size : MEDIUM
100 * @tc.type : FUNC
101 * @tc.level : Level 2
102 */
HWTEST_F(UsbHostRawApiFuncTest, CheckRawApiWriteSync_003, TestSize.Level2)103 HWTEST_F(UsbHostRawApiFuncTest, CheckRawApiWriteSync_003, TestSize.Level2)
104 {
105 printf("------start CheckRawApiWriteSync_003------\n");
106 const string s = "0123456789abcdef";
107 string data;
108 int32_t totalSize = 1024;
109 int32_t writeCnt = 8;
110 unsigned int n = 0;
111 while (n < totalSize / writeCnt / s.size()) {
112 data += s;
113 n++;
114 }
115 const string wlog = "send data[" + data + "] to device";
116 const string rlog = "recv data[" + data + "] from device";
117 double startTs;
118 for (int32_t i = 0; i < writeCnt; i++) {
119 startTs = GetNowTs();
120 ASSERT_EQ(system("usbhost_ddk_test -aR &"), 0);
121 ASSERT_EQ(system(("usbhost_ddk_test -aW '" + data + "'").c_str()), 0);
122 sleep(3);
123 EXPECT_TRUE(HasLog(wlog, startTs)) << "ErrInfo: cannot find sync write log";
124 EXPECT_TRUE(HasLog(rlog, startTs, RLOG_FILE)) << "ErrInfo: cannot find sync recv log";
125 }
126 printf("------end CheckRawApiWriteSync_003------\n");
127 }
128
129 /**
130 * @tc.number : H_Lx_H_Sub_usb_IO read_013, H_Lx_H_Sub_usb_IO read_017
131 * @tc.name : USB串口异步数据读写
132 * @tc.size : MEDIUM
133 * @tc.type : FUNC
134 * @tc.level : Level 1
135 */
HWTEST_F(UsbHostRawApiFuncTest, CheckRawApiWriteAsync_001, TestSize.Level1)136 HWTEST_F(UsbHostRawApiFuncTest, CheckRawApiWriteAsync_001, TestSize.Level1)
137 {
138 printf("------start CheckRawApiWriteAsync_001------\n");
139 ASSERT_EQ(system("usbhost_ddk_test -ar &"), 0) << \
140 "ErrInfo: failed to start async read";
141 sleep(3);
142 const string data = "abc";
143 double startTs = GetNowTs();
144 string wlog, rlog;
145 wlog = "send data[" + data + "] to device";
146 rlog = "recv data[" + data + "] from device";
147 ASSERT_EQ(system(("usbhost_ddk_test -aw '" + data + "'").c_str()), 0);
148 sleep(3);
149 EXPECT_TRUE(HasLog(wlog, startTs)) << "ErrInfo: cannot find async write log";
150 EXPECT_TRUE(HasLog(rlog, startTs, RLOG_FILE)) << "ErrInfo: cannot find async recv log";
151 printf("------end CheckRawApiWriteAsync_001------\n");
152 }
153
154 /**
155 * @tc.number : H_Lx_H_Sub_usb_IO read_013, H_Lx_H_Sub_usb_IO read_017
156 * @tc.name : USB串口异步数据读写
157 * @tc.size : MEDIUM
158 * @tc.type : FUNC
159 * @tc.level : Level 1
160 */
HWTEST_F(UsbHostRawApiFuncTest, CheckRawApiWriteAsync_002, TestSize.Level1)161 HWTEST_F(UsbHostRawApiFuncTest, CheckRawApiWriteAsync_002, TestSize.Level1)
162 {
163 printf("------start CheckRawApiWriteAsync_002------\n");
164 const string data[] = {
165 "0123456789",
166 "Z",
167 "0!a@1#b$2%c^3&D*4(E)5-F_",
168 ""
169 };
170 double startTs = GetNowTs();
171 string wlog, rlog;
172 for (int32_t i = 0; data[i].size() > 0; i++) {
173 wlog = "send data[" + data[i] + "] to device";
174 rlog = "recv data[" + data[i] + "] from device";
175 ASSERT_EQ(system(("usbhost_ddk_test -aw '" + data[i] + "'").c_str()), 0);
176 sleep(3);
177 EXPECT_TRUE(HasLog(wlog, startTs)) << "ErrInfo: cannot find async write log";
178 EXPECT_TRUE(HasLog(rlog, startTs, RLOG_FILE)) << "ErrInfo: cannot find async recv log";
179 }
180 printf("------end CheckRawApiWriteAsync_002------\n");
181 }
182
183 /**
184 * @tc.number : H_Lx_H_Sub_usb_IO read_019
185 * @tc.name : USB串口异步写1KB数据
186 * @tc.size : MEDIUM
187 * @tc.type : FUNC
188 * @tc.level : Level 2
189 */
HWTEST_F(UsbHostRawApiFuncTest, CheckRawApiWriteAsync_003, TestSize.Level2)190 HWTEST_F(UsbHostRawApiFuncTest, CheckRawApiWriteAsync_003, TestSize.Level2)
191 {
192 printf("------start CheckRawApiWriteAsync_003------\n");
193 const string s = "0123456789abcdef";
194 string data;
195 int32_t totalSize = 1024;
196 int32_t writeCnt = 8;
197 unsigned int n = 0;
198 while (n < totalSize / writeCnt / s.size()) {
199 data += s;
200 n++;
201 }
202 const string wlog = "send data[" + data + "] to device";
203 const string rlog = "recv data[" + data + "] from device";
204 double startTs;
205 for (int32_t i = 0; i < writeCnt; i++) {
206 startTs = GetNowTs();
207 ASSERT_EQ(system(("usbhost_ddk_test -aw '" + data + "'").c_str()), 0);
208 sleep(3);
209 EXPECT_TRUE(HasLog(wlog, startTs)) << "ErrInfo: cannot find async write log";
210 EXPECT_TRUE(HasLog(rlog, startTs, RLOG_FILE)) << "ErrInfo: cannot find async recv log";
211 }
212 ASSERT_EQ(system("killall usbhost_ddk_test"), 0) << "ErrInfo: failed to kill async read";
213 printf("------end CheckRawApiWriteAsync_003------\n");
214 }
215 }