22 #include <sys/types.h>
23 #include <system_error>
25 #include "gtest/gtest.h"
36 static void driverSendsProps(
DriverMock &fakeDriver)
38 fprintf(stderr,
"Driver sends properties\n");
42 i) +
"' label='test label' group='test_group' state='Idle' perm='rw' timeout='100' timestamp='2018-01-01T00:00:00'>\n");
43 fakeDriver.
cnx.
send(
"<defNumber name='content' label='content' min='0' max='100' step='1'>50</defNumber>\n");
44 fakeDriver.
cnx.
send(
"</defNumberVector>\n");
50 fprintf(stderr,
"Client reveives properties\n");
54 i) +
"' label='test label' group='test_group' state='Idle' perm='rw' timeout='100' timestamp='2018-01-01T00:00:00'>");
55 indiClient.
cnx.
expectXml(
"<defNumber name='content' label='content' min='0' max='100' step='1'>");
73 fprintf(stderr,
"indiserver started\n");
76 fprintf(stderr,
"fake driver started\n");
78 fakeDriver.
cnx.
expectXml(
"<getProperties version='1.7'/>");
79 fprintf(stderr,
"getProperties received\n");
81 driverSendsProps(fakeDriver);
86 fprintf(stderr,
"Client asks properties\n");
87 indiClient.
cnx.
send(
"<getProperties version='1.7'/>\n");
88 fakeDriver.
cnx.
expectXml(
"<getProperties version='1.7'/>");
90 driverSendsProps(fakeDriver);
91 fprintf(stderr,
"Driver sends properties\n");
93 fprintf(stderr,
"Client receive properties\n");
94 clientReceivesProps(indiClient);
97 TEST(TestClientQueries, ServerForwardRequest)
102 startFakeDev1(indiServer, fakeDriver);
106 indiClient.
connect(indiServer);
110 indiClient.
cnx.
send(
"<newNumberVector device='fakedev1' name='testnumber' timestamp='2018-01-01T00:00:00'>");
111 indiClient.
cnx.
send(
"<oneNumber name='content' > 51 </oneNumber>");
112 indiClient.
cnx.
send(
"</newNumberVector>");
114 fakeDriver.
cnx.
expectXml(
"<newNumberVector device='fakedev1' name='testnumber' timestamp='2018-01-01T00:00:00'>");
126 TEST(TestClientQueries, ServerForwardRequestOfHalfDeadClient)
131 startFakeDev1(indiServer, fakeDriver);
135 indiClient.
connect(indiServer);
139 indiClient.
cnx.
send(
"<getProperties version='1.7'/>\n");
140 fakeDriver.
cnx.
expectXml(
"<getProperties version='1.7'/>");
142 driverSendsProps(fakeDriver);
145 fakeDriver.
cnx.
send(
"<pingRequest uid='1'/>\n");
148 indiClient.
cnx.
send(
"<newNumberVector device='fakedev1' name='testnumber' timestamp='2018-01-01T00:00:00'>");
149 indiClient.
cnx.
send(
"<oneNumber name='content' > 51 </oneNumber>");
150 indiClient.
cnx.
send(
"</newNumberVector>");
155 fakeDriver.
cnx.
expectXml(
"<newNumberVector device='fakedev1' name='testnumber' timestamp='2018-01-01T00:00:00'>");
TEST(TestClientQueries, ServerForwardRequest)
void connectFakeDev1Client(IndiServerController &, DriverMock &fakeDriver, IndiClientMock &indiClient)
void shutdown(bool rd, bool wr)
void expect(const std::string &content)
void send(const std::string &content)
void expectXml(const std::string &xml)
void connect(const IndiServerController &server)
void startDriver(const std::string &driver)
void waitProcessEnd(int expectedExitCode)
NLOHMANN_BASIC_JSON_TPL_DECLARATION std::string to_string(const NLOHMANN_BASIC_JSON_TPL &j)
user-defined to_string function for JSON values
std::string getTestExePath(const std::string &str)