You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2022/05/13 13:39:42 UTC
[plc4x] 01/06: test(plc4j/bacnet): added method to get a particular BVLC by package number
This is an automated email from the ASF dual-hosted git repository.
sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit fd1d2db79d13f6b23133cb7ed22788a5dffb8ec8
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Fri May 13 10:32:50 2022 +0200
test(plc4j/bacnet): added method to get a particular BVLC by package number
---
.../plc4x/java/bacnetip/RandomPackagesTest.java | 25 +++++++++++++++++-----
1 file changed, 20 insertions(+), 5 deletions(-)
diff --git a/plc4j/drivers/bacnet/src/test/java/org/apache/plc4x/java/bacnetip/RandomPackagesTest.java b/plc4j/drivers/bacnet/src/test/java/org/apache/plc4x/java/bacnetip/RandomPackagesTest.java
index d86c0ee577..fcfd0837f2 100644
--- a/plc4j/drivers/bacnet/src/test/java/org/apache/plc4x/java/bacnetip/RandomPackagesTest.java
+++ b/plc4j/drivers/bacnet/src/test/java/org/apache/plc4x/java/bacnetip/RandomPackagesTest.java
@@ -3845,7 +3845,7 @@ public class RandomPackagesTest {
TestPcapEvaluator pcapEvaluator = pcapEvaluator("plugfest-tridium-1.pcap", BACNET_BPF_FILTER_UDP);
return List.of(pcapEvaluator.parseEmAll(
// TODO: check broken parsing
- 2312 ,
+ 2312,
// TODO: check broken parsing
2317,
// TODO: check broken parsing
@@ -6348,6 +6348,7 @@ public class RandomPackagesTest {
protected final PcapHandle pcapHandle;
// maps timestamp to package number
protected final Map<Timestamp, Integer> timestampToPackageNumberMap;
+ protected final Map<Integer, Packet> packageMap;
// maps read package (index) to package number
protected final List<Integer> packageNumbers;
protected final int maxPackages;
@@ -6361,13 +6362,17 @@ public class RandomPackagesTest {
String toParse = DownloadAndCache(pcapFile);
LOGGER.info("Reading {}", toParse);
PcapHandle intermediateHandle = getHandle(toParse);
+ packageMap = new HashMap<>();
int packageNumber = 0;
if (filter != null) {
// In case of filtering we need to read all packages
LOGGER.info("Building timestamp number map");
timestampToPackageNumberMap = new HashMap<>();
- while (intermediateHandle.getNextPacket() != null) {
- timestampToPackageNumberMap.put(intermediateHandle.getTimestamp(), ++packageNumber);
+ Packet packet;
+ while ((packet = intermediateHandle.getNextPacket()) != null) {
+ int currentPackageNumber = ++packageNumber;
+ packageMap.put(currentPackageNumber, packet);
+ timestampToPackageNumberMap.put(intermediateHandle.getTimestamp(), currentPackageNumber);
}
intermediateHandle.close();
// Count package numbers now
@@ -6386,8 +6391,10 @@ public class RandomPackagesTest {
} else {
timestampToPackageNumberMap = null;
packageNumbers = null;
- while (intermediateHandle.getNextPacket() != null) {
- packageNumber++;
+ Packet packet;
+ while ((packet = intermediateHandle.getNextPacket()) != null) {
+ int currentPackageNumber = ++packageNumber;
+ packageMap.put(currentPackageNumber, packet);
}
intermediateHandle.close();
intermediateHandle = getHandle(toParse);
@@ -6423,6 +6430,10 @@ public class RandomPackagesTest {
return nextBVLC(null);
}
+ public BVLC getBVLC(int packageNumber) throws ParseException {
+ return getBvlc(packageMap.get(packageNumber));
+ }
+
public BVLC nextBVLC(Integer ensurePackageNumber) throws NotOpenException, ParseException {
Packet packet = nextPacket();
if (packet == null) {
@@ -6443,6 +6454,10 @@ public class RandomPackagesTest {
throw new IllegalArgumentException("Could not find package with package number " + ensurePackageNumber);
}
}
+ return getBvlc(packet);
+ }
+
+ private BVLC getBvlc(Packet packet) throws ParseException {
UdpPacket udpPacket = packet.get(UdpPacket.class);
assumeTrue(udpPacket != null, "nextBVLC assumes a UDP Packet. If non is there it might by LLC");
LOGGER.info("Handling UDP\n{}", udpPacket);