* Copyright (C) 2021 Huawei Device 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 "ut_command.h"
using namespace Hdc;
namespace HdcTest {
void *TestBackgroundServerForClient()
{
HdcServer server(true);
server.Initial("0.0.0.0:8710");
server.WorkerPendding();
WRITE_LOG(LOG_DEBUG, "Test ServerForClient free");
return nullptr;
}
void TestRunClient(const string &debugServerPort, const string &debugConnectKey, const string &cmd)
{
uv_loop_t loopMain;
uv_loop_init(&loopMain);
HdcClient client(false, debugServerPort, &loopMain);
client.Initial(debugConnectKey);
client.ExecuteCommand(cmd);
uv_loop_close(&loopMain);
}
void PreConnectDaemon(const string &debugServerPort, const string &debugConnectKey)
{
string bufString = "tconn ";
bufString += debugConnectKey;
WRITE_LOG(LOG_DEBUG, "------------Connect command------------");
TestRunClient(debugServerPort, "", bufString.c_str());
}
int TestRuntimeCommandSimple(bool bTCPorUSB, int method, bool bNeedConnectDaemon)
{
string debugServerPort;
string debugConnectKey;
debugServerPort = DEBUG_ADDRESS;
if (bTCPorUSB) {
debugConnectKey = DEBUG_TCP_CONNECT_KEY;
} else {
debugConnectKey = DEBUG_USB_CONNECT_KEY;
}
if (bNeedConnectDaemon) {
PreConnectDaemon(debugServerPort, debugConnectKey);
}
WRITE_LOG(LOG_DEBUG, "Test Jump TestRuntimeCommand");
TestRuntimeCommand(method, debugServerPort, debugConnectKey);
return 0;
}
int TestTaskCommand(int method, const string &debugServerPort, const string &debugConnectKey)
{
WRITE_LOG(LOG_DEBUG, "------------Operate command------------");
string bufString;
switch (method) {
case UT_SHELL_BASIC:
TestRunClient(debugServerPort, debugConnectKey, "shell id");
break;
case UT_SHELL_LIGHT:
TestRunClient(debugServerPort, debugConnectKey, "shell cat /etc/passwd");
break;
case UT_SHELL_HEAVY:
TestRunClient(debugServerPort, debugConnectKey, "shell cat /data/local/tmp/root.txt");
break;
case UT_SHELL_INTERACTIVE:
TestRunClient(debugServerPort, debugConnectKey, CMDSTR_SHELL.c_str());
break;
case UT_FILE_SEND: {
bufString = Base::StringFormat("file send %s/file.local %s/file.remote", UT_TMP_PATH.c_str(),
UT_TMP_PATH.c_str());
TestRunClient(debugServerPort, debugConnectKey, bufString);
break;
}
case UT_FILE_RECV:
TestRunClient(debugServerPort, debugConnectKey,
"file recv /mnt/hgfs/vtmp/f.txt /mnt/hgfs/vtmp/f2.txt -z 1");
break;
case UT_FORWARD_TCP2TCP:
TestRunClient(debugServerPort, debugConnectKey, "fport tcp:8081 tcp:8082");
break;
case UT_FORWARD_TCP2FILE:
TestRunClient(debugServerPort, debugConnectKey, "fport tcp:8081 localfilesystem:mysocket");
break;
case UT_FORWARD_TCP2DEV:
TestRunClient(debugServerPort, debugConnectKey, "fport tcp:8081 dev:/dev/urandom");
break;
case UT_FORWARD_TCP2JDWP:
TestRunClient(debugServerPort, debugConnectKey, "fport tcp:8081 jdwp:1234");
break;
case UT_APP_INSTALL:
bufString = Base::StringFormat("install %s/app.hap", UT_TMP_PATH.c_str());
TestRunClient(debugServerPort, debugConnectKey, bufString);
break;
case UT_TEST_TMP:
#ifdef DEF_NULL
while (true) {
uv_sleep(GLOBAL_TIMEOUT);
TestRunClient(debugServerPort, debugConnectKey, "list targets");
TestRunClient(debugServerPort, debugConnectKey, "shell id");
TestRunClient(debugServerPort, debugConnectKey, "shell bm dump -a");
}
TestRunClient(debugServerPort, debugConnectKey, "install /d/helloworld.hap");
TestRunClient(debugServerPort, debugConnectKey, "target mount");
TestRunClient(debugServerPort, debugConnectKey, "shell pwd");
TestRunClient(debugServerPort, debugConnectKey, "target mount");
TestRunClient(debugServerPort, debugConnectKey, "shell pwd");
TestRunClient(debugServerPort, debugConnectKey, "install /d -rt");
TestRunClient(debugServerPort, debugConnectKey, "fport tcp:8081 tcp:8082");
TestRunClient(debugServerPort, debugConnectKey, "fport tcp:8081 dev:/dev/urandom");
TestRunClient(debugServerPort, debugConnectKey, "shell hilog");
TestRunClient(debugServerPort, debugConnectKey, "file send /mnt/hgfs/vtmp/f.txt /tmp/f2.txt");
TestRunClient(debugServerPort, debugConnectKey, "file recv /tmp/f2.txt /mnt/hgfs/vtmp/f2.txt");
TestRunClient(debugServerPort, debugConnectKey, "shell find /proc");
TestRunClient(debugServerPort, debugConnectKey, "file send \"/d/a b/1.txt\" \"/d/a b/2.txt\"");
TestRunClient(debugServerPort, debugConnectKey, "file recv \"/d/a b/1.txt\" \"/d/a b/2.txt\"");
#endif
break;
default:
break;
}
WRITE_LOG(LOG_DEBUG, "!!!Client finish");
return 0;
}
int TestRuntimeCommand(const int method, const string &debugServerPort, const string &debugConnectKey)
{
switch (method) {
case UT_HELP:
TestRunClient(debugServerPort, "", CMDSTR_SOFTWARE_HELP.c_str());
TestRunClient(debugServerPort, "", CMDSTR_SOFTWARE_VERSION.c_str());
break;
case UT_DISCOVER:
TestRunClient(debugServerPort, "", CMDSTR_TARGET_DISCOVER.c_str());
break;
case UT_LIST_TARGETS:
TestRunClient(debugServerPort, "", CMDSTR_LIST_TARGETS.c_str());
break;
case UT_CONNECT_ANY:
TestRunClient(debugServerPort, "", CMDSTR_CONNECT_ANY.c_str());
break;
case UT_KILL_SERVER:
TestRunClient(debugServerPort, "", CMDSTR_SERVICE_KILL.c_str());
break;
case UT_KILL_DAEMON:
TestRunClient(debugServerPort, debugConnectKey, "kill daemon");
break;
default:
TestTaskCommand(method, debugServerPort, debugConnectKey);
break;
}
return 0;
}
}