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