23#include <system_error>
25#include "gtest/gtest.h"
36static void driverSendsProps(
DriverMock &fakeDriver)
38 fprintf(stderr,
"Driver sends properties\n");
41 fakeDriver.
cnx.
send(
"<defNumberVector device='fakedev1' name='testnumber" + std::to_string(
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 receives properties\n");
53 indiClient.
cnx.
expectXml(
"<defNumberVector device='fakedev1' name='testnumber" + std::to_string(
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'>");
69 std::string fakeDriverPath = FAKEDRIVER_PATH;
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);
97TEST(TestClientQueries, ServerForwardRequest)
102 startFakeDev1(indiServer, fakeDriver);
106 indiClient.
connect(indiServer);
108 connectFakeDev1Client(indiServer, fakeDriver, indiClient);
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'>");
126TEST(TestClientQueries, ServerForwardRequestOfHalfDeadClient)
131 startFakeDev1(indiServer, fakeDriver);
135 indiClient.
connect(indiServer);
137 connectFakeDev1Client(indiServer, fakeDriver, indiClient);
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 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)