From dea9e4f24e8bbd8dbd526e56c882e9c431955c36 Mon Sep 17 00:00:00 2001 From: rusefillc Date: Thu, 22 Feb 2024 16:59:05 -0500 Subject: [PATCH] revive ptrace #5983 HW CI --- .../src/main/java/com/rusefi/HwCiProteus.java | 2 + .../com/rusefi/f4discovery/PTraceTest.java | 37 +++++++++++++++++++ .../com/rusefi/io/commands/PTraceHelper.java | 33 +++++++++++++++++ .../com/rusefi/PerformanceTraceHelper.java | 27 +------------- 4 files changed, 74 insertions(+), 25 deletions(-) create mode 100644 java_console/autotest/src/main/java/com/rusefi/f4discovery/PTraceTest.java create mode 100644 java_console/io/src/main/java/com/rusefi/io/commands/PTraceHelper.java diff --git a/java_console/autotest/src/main/java/com/rusefi/HwCiProteus.java b/java_console/autotest/src/main/java/com/rusefi/HwCiProteus.java index c8be618d99c..13641fa0330 100644 --- a/java_console/autotest/src/main/java/com/rusefi/HwCiProteus.java +++ b/java_console/autotest/src/main/java/com/rusefi/HwCiProteus.java @@ -3,6 +3,7 @@ import com.rusefi.common.MiscTest; import com.rusefi.f4discovery.CompositeLoggerTest; import com.rusefi.f4discovery.HighRevTest; +import com.rusefi.f4discovery.PTraceTest; import com.rusefi.proteus.ProteusAnalogTest; /** @@ -11,6 +12,7 @@ public class HwCiProteus { public static void main(String[] args) { CmdJUnitRunner.runHardwareTestAndExit(new Class[]{ + PTraceTest.class, CompositeLoggerTest.class, HighRevTest.class, MiscTest.class, diff --git a/java_console/autotest/src/main/java/com/rusefi/f4discovery/PTraceTest.java b/java_console/autotest/src/main/java/com/rusefi/f4discovery/PTraceTest.java new file mode 100644 index 00000000000..29e7bcbf746 --- /dev/null +++ b/java_console/autotest/src/main/java/com/rusefi/f4discovery/PTraceTest.java @@ -0,0 +1,37 @@ +package com.rusefi.f4discovery; + +import com.rusefi.RusefiTestBase; +import com.rusefi.io.LinkManager; +import com.rusefi.io.commands.PTraceHelper; +import com.rusefi.tracing.Entry; +import org.junit.Test; + +import java.util.List; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicReference; + +import static org.junit.Assert.assertTrue; + +public class PTraceTest extends RusefiTestBase { + @Test + public void assertPTrace() throws InterruptedException { + LinkManager linkManager = ecu.getLinkManager(); + AtomicReference> result = new AtomicReference<>(); + + CountDownLatch latch = new CountDownLatch(1); + linkManager.submit(new Runnable() { + @Override + public void run() { + result.set(PTraceHelper.requestWaitAndGetPTrace(linkManager.getBinaryProtocol())); + latch.countDown(); + + } + }); + + + latch.await(30, TimeUnit.SECONDS); + List entries = result.get(); + assertTrue(entries != null && !entries.isEmpty()); + } +} diff --git a/java_console/io/src/main/java/com/rusefi/io/commands/PTraceHelper.java b/java_console/io/src/main/java/com/rusefi/io/commands/PTraceHelper.java new file mode 100644 index 00000000000..928e6f27265 --- /dev/null +++ b/java_console/io/src/main/java/com/rusefi/io/commands/PTraceHelper.java @@ -0,0 +1,33 @@ +package com.rusefi.io.commands; + +import com.rusefi.binaryprotocol.BinaryProtocol; +import com.rusefi.config.generated.Fields; +import com.rusefi.tracing.Entry; +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +import static com.rusefi.binaryprotocol.IoHelper.checkResponseCode; + +public class PTraceHelper { + @NotNull + public static List requestWaitAndGetPTrace(BinaryProtocol bp) { + bp.executeCommand(Fields.TS_PERF_TRACE_BEGIN, "begin trace"); + try { + Thread.sleep(500); + } catch (InterruptedException e) { + throw new IllegalStateException(e); + } + + return executeGetPTraceCommand(bp); + } + + @NotNull + private static List executeGetPTraceCommand(BinaryProtocol bp) { + byte[] packet = bp.executeCommand(Fields.TS_PERF_TRACE_GET_BUFFER, "get trace"); + if (!checkResponseCode(packet, (byte) Fields.TS_RESPONSE_OK) || ((packet.length - 1) % 8) != 0) + throw new IllegalStateException("Unexpected packet, length=" + (packet != null ? 0 : packet.length)); + + return Entry.parseBuffer(packet); + } +} diff --git a/java_console/ui/src/main/java/com/rusefi/PerformanceTraceHelper.java b/java_console/ui/src/main/java/com/rusefi/PerformanceTraceHelper.java index b1db5ce6bd8..c1c7b41a4ec 100644 --- a/java_console/ui/src/main/java/com/rusefi/PerformanceTraceHelper.java +++ b/java_console/ui/src/main/java/com/rusefi/PerformanceTraceHelper.java @@ -1,19 +1,17 @@ package com.rusefi; import com.rusefi.binaryprotocol.BinaryProtocol; -import com.rusefi.config.generated.Fields; import com.rusefi.core.MessagesCentral; +import com.rusefi.io.commands.PTraceHelper; import com.rusefi.tracing.Entry; import com.rusefi.tracing.JsonOutput; import com.rusefi.ui.RpmModel; -import org.jetbrains.annotations.NotNull; import javax.swing.*; import java.io.FileOutputStream; import java.io.IOException; import java.util.List; -import static com.rusefi.binaryprotocol.IoHelper.checkResponseCode; import static com.rusefi.tools.ConsoleTools.startAndConnect; public class PerformanceTraceHelper { @@ -25,7 +23,7 @@ public static void grabPerformanceTrace(JComponent parent, BinaryProtocol bp) { } try { - List data = requestWaitAndGetPTrace(bp); + List data = PTraceHelper.requestWaitAndGetPTrace(bp); if (data.isEmpty()) { String msg = "Empty PERF_TRACE response"; JOptionPane.showMessageDialog(parent, msg, msg, JOptionPane.ERROR_MESSAGE); @@ -41,27 +39,6 @@ public static void grabPerformanceTrace(JComponent parent, BinaryProtocol bp) { } } - @NotNull - private static List requestWaitAndGetPTrace(BinaryProtocol bp) { - bp.executeCommand(Fields.TS_PERF_TRACE_BEGIN, "begin trace"); - try { - Thread.sleep(500); - } catch (InterruptedException e) { - throw new IllegalStateException(e); - } - - return executeGetPTraceCommand(bp); - } - - @NotNull - private static List executeGetPTraceCommand(BinaryProtocol bp) { - byte[] packet = bp.executeCommand(Fields.TS_PERF_TRACE_GET_BUFFER, "get trace"); - if (!checkResponseCode(packet, (byte) Fields.TS_RESPONSE_OK) || ((packet.length - 1) % 8) != 0) - throw new IllegalStateException("Unexpected packet, length=" + (packet != null ? 0 : packet.length)); - - return Entry.parseBuffer(packet); - } - public static void getPerformanceTune() { startAndConnect(linkManager -> { BinaryProtocol binaryProtocol = linkManager.getConnector().getBinaryProtocol();