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);