knowL: Knowledge Libraries
Loading...
Searching...
No Matches
Common.h
1#include <clog_qt>
2#include <cres_qt>
3#include <knowCore/Test.h>
4
5#include <knowDataTransfert/Interfaces/ReceiveIterator.h>
6#include <knowDataTransfert/Interfaces/SendIterator.h>
7#include <knowDataTransfert/Manager.h>
8
10{
11public:
12 bool hasNext() const override { return m_seq < 10; }
13 cres_qresult<QCborValue> next() override
14 {
15 QCborMap m;
16 m[QStringLiteral("value")] = m_seq++;
17 return cres_success(m);
18 }
19private:
20 quint32 m_seq = 0;
21};
22
24{
25public:
26 TestReceiveIterator(QList<quint32>* _destination) : m_destination(_destination) {}
27 virtual cres_qresult<void> next(const QCborValue& _data)
28 {
29 m_tmp.append(_data.toMap()[QStringLiteral("value")].toInteger());
30 return cres_success();
31 }
32 virtual cres_qresult<void> finalise()
33 {
34 *m_destination = m_tmp;
35 return cres_success();
36 }
37private:
38 QList<quint32> m_tmp;
39 QList<quint32>* m_destination;
40};
41
43{
44public:
45 TestSendBigDataIterator(const QList<QByteArray>& _data) : m_data(_data) {}
46 bool hasNext() const override { return m_seq < m_data.size(); }
47 cres_qresult<QCborValue> next() override
48 {
49 QCborMap m;
50 m[QStringLiteral("value")] = m_data[m_seq++];
51 return cres_success(m);
52 }
53private:
54 qint32 m_seq = 0;
55 QList<QByteArray> m_data;
56};
57
59{
60public:
61 TestReceiveBigDataIterator(QList<QByteArray>* _destination) : m_destination(_destination) {}
62 virtual cres_qresult<void> next(const QCborValue& _data)
63 {
64 m_tmp.append(_data.toMap()[QStringLiteral("value")].toByteArray());
65 return cres_success();
66 }
67 virtual cres_qresult<void> finalise()
68 {
69 *m_destination = m_tmp;
70 return cres_success();
71 }
72private:
74 QList<QByteArray>* m_destination;
75};
76
77void runDataExchange(knowDataTransfert::Manager* manager_src,
78 knowDataTransfert::Manager* manager_dst_1,
79 knowDataTransfert::Manager* manager_dst_2)
80{
81 QList<quint32> output_1, output_2;
82 ;
83
84 // Test with 1
85 output_1.clear();
86 output_2.clear();
87 manager_src->setupSendJob(new TestSendIterator, "com1", {"dst_1"});
88 manager_dst_1->setupReceiveJob(new TestReceiveIterator(&output_1), "com1", "src");
89 KNOWCORE_TEST_WAIT_FOR(output_1.size() == 10);
90 QCOMPARE(output_1, QList<quint32>{KNOWCORE_LIST(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)});
91
92 // Test with 2
93 output_1.clear();
94 output_2.clear();
95 manager_src->setupSendJob(new TestSendIterator, "com2", {"dst_1", "dst_2"});
96 manager_dst_1->setupReceiveJob(new TestReceiveIterator(&output_1), "com2", "src");
97 manager_dst_2->setupReceiveJob(new TestReceiveIterator(&output_2), "com2", "src");
98 KNOWCORE_TEST_WAIT_FOR(output_1.size() == 10 and output_2.size() == 10);
99 QCOMPARE(output_1, QList<quint32>{KNOWCORE_LIST(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)});
100 QCOMPARE(output_2, QList<quint32>{KNOWCORE_LIST(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)});
101}
102
103void runBigDataExchange(knowDataTransfert::Manager* manager_src,
104 knowDataTransfert::Manager* manager_dst_1,
105 knowDataTransfert::Manager* manager_dst_2)
106{
107 QList<QByteArray> input;
108
109 int next = 0;
110 for(int i = 0; i < 3; ++i)
111 {
112 QByteArray data;
113 data.resize(1000 * sizeof(quint32));
114 quint32* data_ptr = reinterpret_cast<quint32*>(data.data());
115 for(int j = 0; j < 1000; ++j)
116 {
117 data_ptr[j] = next++;
118 }
119 input.append(data);
120 }
121
122 QList<QByteArray> output_1, output_2;
123 ;
124
125 // Test with 1
126 output_1.clear();
127 output_2.clear();
128 manager_src->setupSendJob(new TestSendBigDataIterator(input), "bigcom1", {"dst_1"});
129 manager_dst_1->setupReceiveJob(new TestReceiveBigDataIterator(&output_1), "bigcom1", "src");
130 KNOWCORE_TEST_WAIT_FOR(output_1.size() == input.size());
131 QCOMPARE(output_1, input);
132
133 // Test with 2
134 output_1.clear();
135 output_2.clear();
136 manager_src->setupSendJob(new TestSendBigDataIterator(input), "bigcom2", {"dst_1", "dst_2"});
137 manager_dst_1->setupReceiveJob(new TestReceiveBigDataIterator(&output_1), "bigcom2", "src");
138 manager_dst_2->setupReceiveJob(new TestReceiveBigDataIterator(&output_2), "bigcom2", "src");
139 KNOWCORE_TEST_WAIT_FOR(output_1.size() == input.size() and output_2.size() == input.size());
140 QCOMPARE(output_1, input);
141 QCOMPARE(output_2, input);
142}
Definition Forward.h:14
Definition Common.h:59
Definition Common.h:24
Definition Common.h:43
Definition Common.h:10
Definition Manager.h:6