test_tc_docker.cpp 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. //
  2. // Created by jarod on 2021/8/09.
  3. //
  4. #include "util/tc_docker.h"
  5. #include "gtest/gtest.h"
  6. #include "../server/Hello.h"
  7. using namespace tars;
  8. using namespace Test;
  9. class DockerTest : public testing::Test
  10. {
  11. public:
  12. //添加日志
  13. static void SetUpTestCase()
  14. {
  15. // cout<<"SetUpTestCase"<<endl;
  16. }
  17. static void TearDownTestCase()
  18. {
  19. // cout<<"TearDownTestCase"<<endl;
  20. }
  21. virtual void SetUp() //TEST跑之前会执行SetUp
  22. {
  23. // cout<<"SetUp"<<endl;
  24. }
  25. virtual void TearDown() //TEST跑完之后会执行TearDown
  26. {
  27. // cout<<"TearDown"<<endl;
  28. }
  29. };
  30. //TEST_F(DockerTest, login)
  31. //{
  32. // TC_Docker docker;
  33. //
  34. // bool succ = docker.login("", "", "");
  35. // ASSERT_TRUE(succ);
  36. //
  37. // LOG_CONSOLE_DEBUG << "login:" << succ << ", " << (succ?docker.getStdoutMessage() : docker.getStderrMessage()) << endl;
  38. //}
  39. TEST_F(DockerTest, pull)
  40. {
  41. TC_Docker docker;
  42. // docker.setAuthentication("ruanshudong", "", "");
  43. bool succ = docker.pull("docker.tarsyun.com/tarscloud/tars.nodejsbase:latest");
  44. ASSERT_TRUE(succ);
  45. LOG_CONSOLE_DEBUG << "pull:" << succ << ", " << (succ ? docker.getResponseMessage() : docker.getErrMessage()) << endl;
  46. }
  47. TEST_F(DockerTest, pullNotExists)
  48. {
  49. TC_Docker docker;
  50. bool succ = docker.pull("docker.tarsyun.com/test:latest");
  51. ASSERT_FALSE(succ);
  52. LOG_CONSOLE_DEBUG << "pull:" << succ << ", " << (succ ? docker.getResponseMessage() : docker.getErrMessage()) << endl;
  53. }
  54. TEST_F(DockerTest, createAndStart)
  55. {
  56. bool succ;
  57. TC_Docker docker;
  58. // docker.setAuthentication("ruanshudong", "", "");
  59. succ = docker.pull("docker.tarsyun.com/tarscloud/tars.nodejsbase:latest");
  60. LOG_CONSOLE_DEBUG << "pull:" << succ << ", "
  61. << (succ ? docker.getResponseMessage() : docker.getErrMessage()) << endl;
  62. ASSERT_TRUE(succ);
  63. docker.remove("test", true);
  64. map<string, string> mounts;
  65. mounts["/"] = "/data";
  66. map<string, pair<string, int>> ports;
  67. ports["80/tcp"] = make_pair("0.0.0.0", 80);
  68. ports["8080/tcp"] = make_pair("127.0.0.1", 8080);
  69. vector<string> entrypoints;
  70. entrypoints.push_back("sleep");
  71. entrypoints.push_back("100");
  72. succ = docker.create("test", "docker.tarsyun.com/tarscloud/tars.nodejsbase:latest", entrypoints, {},{}, mounts, ports, "", 0, "host", "none", true, false);
  73. ASSERT_TRUE(succ);
  74. LOG_CONSOLE_DEBUG << "run:" << succ << ", " << (succ ? docker.getResponseMessage() : docker.getErrMessage()) << endl;
  75. if(succ)
  76. {
  77. succ = docker.start("test");
  78. ASSERT_TRUE(succ);
  79. }
  80. }
  81. TEST_F(DockerTest, stop)
  82. {
  83. bool succ;
  84. {
  85. TC_Docker docker;
  86. // docker.setAuthentication("ruanshudong", "", "");
  87. docker.remove("test", true);
  88. succ = docker.pull("docker.tarsyun.com/tarscloud/tars.nodejsbase:latest");
  89. LOG_CONSOLE_DEBUG << "pull:" << succ << ", "
  90. << (succ ? docker.getResponseMessage() : docker.getErrMessage()) << endl;
  91. ASSERT_TRUE(succ);
  92. vector<string> entrypoints;
  93. entrypoints.push_back("sleep");
  94. entrypoints.push_back("100");
  95. succ = docker.create("test", "docker.tarsyun.com/tarscloud/tars.nodejsbase:latest", entrypoints, {}, {}, {}, {}, "", 0,
  96. "host", "none", true, false);
  97. LOG_CONSOLE_DEBUG << "create:" << succ << ", "
  98. << (succ ? docker.getResponseMessage() : docker.getErrMessage()) << endl;
  99. ASSERT_TRUE(succ);
  100. succ = docker.start("test");
  101. LOG_CONSOLE_DEBUG << "start:" << succ << ", "
  102. << (succ ? docker.getResponseMessage() : docker.getErrMessage()) << endl;
  103. ASSERT_TRUE(succ);
  104. }
  105. {
  106. TC_Docker docker;
  107. succ = docker.stop("test", 10);
  108. LOG_CONSOLE_DEBUG << "stop:" << succ << ", "
  109. << (succ ? docker.getResponseMessage() : docker.getErrMessage()) << endl;
  110. ASSERT_TRUE(succ);
  111. }
  112. }
  113. TEST_F(DockerTest, inspectContainer)
  114. {
  115. TC_Docker docker;
  116. docker.setAuthentication("ruanshudong", "", "");
  117. docker.remove("test", true);
  118. vector<string> entrypoints;
  119. entrypoints.push_back("sleep");
  120. entrypoints.push_back("100");
  121. bool succ = docker.create("test", "tarscloud/tars.nodejsbase:latest", entrypoints, {},{}, {}, {}, "", 0, "host", "none", true, false);
  122. LOG_CONSOLE_DEBUG << "inspectContainer:" << succ << ", " << (succ ? docker.getResponseMessage() : docker.getErrMessage()) << endl;
  123. ASSERT_TRUE(succ);
  124. succ = docker.inspectContainer("test");
  125. LOG_CONSOLE_DEBUG << "inspectContainer:" << succ << ", " << (succ ? docker.getResponseMessage() : docker.getErrMessage()) << endl;
  126. ASSERT_TRUE(succ);
  127. }
  128. TEST_F(DockerTest, inspectContainerNotExists)
  129. {
  130. TC_Docker docker;
  131. docker.remove("test", true);
  132. bool succ = docker.inspectContainer("test");
  133. LOG_CONSOLE_DEBUG << "inspectContainer:" << succ << ", " << (succ ? docker.getResponseMessage() : docker.getErrMessage()) << endl;
  134. ASSERT_FALSE(succ);
  135. }
  136. TEST_F(DockerTest, start)
  137. {
  138. TC_Docker docker;
  139. docker.remove("test", true);
  140. vector<string> entrypoints;
  141. entrypoints.push_back("sleep");
  142. entrypoints.push_back("100");
  143. bool succ;
  144. succ = docker.pull("docker.tarsyun.com/tarscloud/tars.nodejsbase:latest");
  145. LOG_CONSOLE_DEBUG << "pull:" << succ << ", "
  146. << (succ ? docker.getResponseMessage() : docker.getErrMessage()) << endl;
  147. succ = docker.create("test", "docker.tarsyun.com/tarscloud/tars.nodejsbase:latest", entrypoints, {}, {}, {}, {}, "", 0,
  148. "", "none", false, false);
  149. LOG_CONSOLE_DEBUG << "create:" << succ << ", "
  150. << (succ ? docker.getResponseMessage() : docker.getErrMessage()) << endl;
  151. succ = docker.start("test");
  152. LOG_CONSOLE_DEBUG << "start:" << succ << ", "
  153. << (succ ? docker.getResponseMessage() : docker.getErrMessage()) << endl;
  154. ASSERT_TRUE(succ);
  155. }
  156. TEST_F(DockerTest, inspectImage)
  157. {
  158. TC_Docker docker;
  159. docker.setDockerUnixLocal("/var/run/docker.sock");
  160. bool succ = docker.pull("docker.tarsyun.com/tarscloud/tars.nodejsbase:latest");
  161. if(!succ)
  162. {
  163. LOG_CONSOLE_DEBUG << docker.getErrMessage() << endl;
  164. }
  165. ASSERT_TRUE(succ);
  166. {
  167. bool succ = docker.inspectImage("docker.tarsyun.com/tarscloud/tars.nodejsbase:latest");
  168. ASSERT_TRUE(succ);
  169. LOG_CONSOLE_DEBUG << "inspectImage:" << succ << ", " << (succ ? docker.getResponseMessage() : docker.getErrMessage()) << endl;
  170. JsonValueObjPtr oPtr = JsonValueObjPtr::dynamicCast(TC_Json::getValue(docker.getResponseMessage()));
  171. string sha = JsonValueStringPtr::dynamicCast(oPtr->value["Id"])->value;
  172. LOG_CONSOLE_DEBUG << sha << endl;
  173. }
  174. }