Skip to content

Commit dbbb00f

Browse files
authored
Reenable and fix flaky tests (#1837)
1 parent 78f5760 commit dbbb00f

File tree

5 files changed

+20
-22
lines changed

5 files changed

+20
-22
lines changed

.github/workflows/build.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ jobs:
8989
- name: Gradle Build
9090
run: ./gradlew photon-targeting:build photon-core:build photon-server:build -x check
9191
- name: Gradle Tests
92-
run: ./gradlew testHeadless -i --stacktrace
92+
run: ./gradlew testHeadless --stacktrace
9393
- name: Gradle Coverage
9494
run: ./gradlew jacocoTestReport
9595
- name: Publish Coverage Report
@@ -185,7 +185,7 @@ jobs:
185185
distribution: temurin
186186
architecture: ${{ matrix.architecture }}
187187
- run: git fetch --tags --force
188-
- run: ./gradlew photon-targeting:build photon-lib:build -i
188+
- run: ./gradlew photon-targeting:build photon-lib:build
189189
name: Build with Gradle
190190
- run: ./gradlew photon-lib:publish photon-targeting:publish
191191
name: Publish
@@ -226,7 +226,7 @@ jobs:
226226
git config --global --add safe.directory /__w/photonvision/photonvision
227227
- name: Build PhotonLib
228228
# We don't need to run tests, since we specify only non-native platforms
229-
run: ./gradlew photon-targeting:build photon-lib:build ${{ matrix.build-options }} -i -x test
229+
run: ./gradlew photon-targeting:build photon-lib:build ${{ matrix.build-options }} -x test
230230
- name: Publish
231231
run: ./gradlew photon-lib:publish photon-targeting:publish ${{ matrix.build-options }}
232232
env:

photon-lib/src/test/java/org/photonvision/PhotonCameraTest.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import static org.junit.jupiter.api.Assertions.assertFalse;
2929
import static org.junit.jupiter.api.Assertions.assertNull;
3030
import static org.junit.jupiter.api.Assertions.assertTrue;
31-
import static org.junit.jupiter.api.Assumptions.assumeTrue;
3231
import static org.photonvision.UnitTestUtils.waitForCondition;
3332
import static org.photonvision.UnitTestUtils.waitForSequenceNumber;
3433

@@ -48,7 +47,10 @@
4847
import org.junit.jupiter.api.AfterEach;
4948
import org.junit.jupiter.api.BeforeAll;
5049
import org.junit.jupiter.api.BeforeEach;
50+
import org.junit.jupiter.api.MethodOrderer;
51+
import org.junit.jupiter.api.Order;
5152
import org.junit.jupiter.api.Test;
53+
import org.junit.jupiter.api.TestMethodOrder;
5254
import org.junit.jupiter.params.ParameterizedTest;
5355
import org.junit.jupiter.params.provider.Arguments;
5456
import org.junit.jupiter.params.provider.MethodSource;
@@ -60,6 +62,7 @@
6062
import org.photonvision.targeting.PhotonPipelineMetadata;
6163
import org.photonvision.targeting.PhotonPipelineResult;
6264

65+
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
6366
class PhotonCameraTest {
6467
// A test-scoped, local-only NT instance
6568
NetworkTableInstance inst = null;
@@ -76,6 +79,7 @@ public void setup() {
7679
HAL.initialize(500, 0);
7780

7881
inst = NetworkTableInstance.create();
82+
assertTrue(inst.isValid());
7983
inst.stopClient();
8084
inst.stopServer();
8185
inst.startLocal();
@@ -105,6 +109,7 @@ public void testEmpty() {
105109

106110
// Just a smoketest for dev use -- don't run by default
107111
@Test
112+
@Order(3)
108113
public void testTimeSyncServerWithPhotonCamera() throws InterruptedException, IOException {
109114
load_wpilib();
110115
PhotonTargetingJniLoader.load();
@@ -189,12 +194,10 @@ private void configureInstanceDataLoggers(NetworkTableInstance inst, String name
189194
* check
190195
*/
191196
@ParameterizedTest
197+
@Order(2)
192198
@MethodSource("testNtOffsets")
193199
public void testRestartingRobotAndCoproc(
194200
int robotStart, int coprocStart, int robotRestart, int coprocRestart) throws Throwable {
195-
// See #1574 - test flakey, disabled until we address this
196-
assumeTrue(false);
197-
198201
var robotNt = NetworkTableInstance.create();
199202
var coprocNt = NetworkTableInstance.create();
200203

@@ -304,9 +307,8 @@ public void testRestartingRobotAndCoproc(
304307
}
305308

306309
@Test
310+
@Order(1) // Alerts can't be reset, need to run this test first to have a clean slate
307311
public void testAlerts() throws InterruptedException {
308-
// See https://github.com/PhotonVision/photonvision/pull/1969. Flaky on Linux
309-
assumeTrue(false);
310312
// GIVEN a fresh NT instance
311313

312314
var cameraName = "foobar";

photon-lib/src/test/java/org/photonvision/VisionSystemSimTest.java

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import static org.junit.jupiter.api.Assertions.assertFalse;
3030
import static org.junit.jupiter.api.Assertions.assertTrue;
3131
import static org.junit.jupiter.api.Assertions.fail;
32-
import static org.junit.jupiter.api.Assumptions.assumeTrue;
3332
import static org.photonvision.UnitTestUtils.waitForSequenceNumber;
3433

3534
import edu.wpi.first.apriltag.AprilTag;
@@ -67,7 +66,6 @@
6766
import org.photonvision.simulation.VisionTargetSim;
6867
import org.photonvision.targeting.PhotonTrackedTarget;
6968

70-
// See #1574 - flakey on windows and also linux, so commenting out until we bump wpilib
7169
class VisionSystemSimTest {
7270
private static final double kRotDeltaDeg = 0.25;
7371

@@ -85,9 +83,6 @@ public static void setUp() {
8583
}
8684

8785
OpenCvLoader.forceStaticLoad();
88-
89-
// See #1574 - test flakey, disabled until we address this
90-
assumeTrue(false);
9186
}
9287

9388
@BeforeEach
@@ -200,7 +195,7 @@ public void testNotVisibleVert1() {
200195
var cameraSim = new PhotonCameraSim(camera);
201196
visionSysSim.addCamera(cameraSim, new Transform3d());
202197
cameraSim.prop.setCalibration(640, 480, Rotation2d.fromDegrees(80));
203-
visionSysSim.addVisionTargets(new VisionTargetSim(targetPose, new TargetModel(1.0, 3.0), 3));
198+
visionSysSim.addVisionTargets(new VisionTargetSim(targetPose, new TargetModel(3.0, 3.0), 3));
204199

205200
var robotPose = new Pose2d(new Translation2d(5, 0), Rotation2d.fromDegrees(5));
206201
visionSysSim.update(robotPose);
@@ -225,7 +220,7 @@ public void testNotVisibleVert2() {
225220
var cameraSim = new PhotonCameraSim(camera);
226221
visionSysSim.addCamera(cameraSim, robotToCamera);
227222
cameraSim.prop.setCalibration(1234, 1234, Rotation2d.fromDegrees(80));
228-
visionSysSim.addVisionTargets(new VisionTargetSim(targetPose, new TargetModel(1.0, 0.5), 1736));
223+
visionSysSim.addVisionTargets(new VisionTargetSim(targetPose, new TargetModel(0.5, 0.5), 1736));
229224

230225
var robotPose = new Pose2d(new Translation2d(13.98, 0), Rotation2d.fromDegrees(5));
231226
visionSysSim.update(robotPose);
@@ -250,7 +245,7 @@ public void testNotVisibleTgtSize() {
250245
visionSysSim.addCamera(cameraSim, new Transform3d());
251246
cameraSim.prop.setCalibration(640, 480, Rotation2d.fromDegrees(80));
252247
cameraSim.setMinTargetAreaPixels(20.0);
253-
visionSysSim.addVisionTargets(new VisionTargetSim(targetPose, new TargetModel(0.1, 0.025), 24));
248+
visionSysSim.addVisionTargets(new VisionTargetSim(targetPose, new TargetModel(0.1, 0.1), 24));
254249

255250
var robotPose = new Pose2d(new Translation2d(12, 0), Rotation2d.fromDegrees(5));
256251
visionSysSim.update(robotPose);
@@ -274,7 +269,7 @@ public void testNotVisibleTooFarForLEDs() {
274269
cameraSim.prop.setCalibration(640, 480, Rotation2d.fromDegrees(80));
275270
cameraSim.setMaxSightRange(10);
276271
cameraSim.setMinTargetAreaPixels(1.0);
277-
visionSysSim.addVisionTargets(new VisionTargetSim(targetPose, new TargetModel(1.0, 0.25), 78));
272+
visionSysSim.addVisionTargets(new VisionTargetSim(targetPose, new TargetModel(1.0, 1), 78));
278273

279274
var robotPose = new Pose2d(new Translation2d(10, 0), Rotation2d.fromDegrees(5));
280275
visionSysSim.update(robotPose);
@@ -322,7 +317,7 @@ public void testPitchAngles(double testPitch) throws InterruptedException {
322317
visionSysSim.addCamera(cameraSim, new Transform3d());
323318
cameraSim.prop.setCalibration(640, 480, Rotation2d.fromDegrees(120));
324319
cameraSim.setMinTargetAreaPixels(0.0);
325-
visionSysSim.addVisionTargets(new VisionTargetSim(targetPose, new TargetModel(0.5, 0.5), 23));
320+
visionSysSim.addVisionTargets(new VisionTargetSim(targetPose, new TargetModel(0.5, 0.5), 3));
326321

327322
// Transform is now robot -> camera
328323
visionSysSim.adjustCamera(

photon-lib/src/test/native/cpp/VisionSystemSimTest.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,6 @@ TEST_P(VisionSystemSimTestWithParamsTest, YawAngles) {
220220
const frc::Pose3d targetPose{
221221
{15.98_m, 0_m, 0_m},
222222
frc::Rotation3d{0_deg, 0_deg, units::radian_t{3 * std::numbers::pi / 4}}};
223-
frc::Pose2d robotPose{{10_m, 0_m}, frc::Rotation2d{GetParam() * -1.0}};
224223
photon::VisionSystemSim visionSysSim{"Test"};
225224
photon::PhotonCamera camera{"camera"};
226225
photon::PhotonCameraSim cameraSim{&camera};
@@ -231,8 +230,8 @@ TEST_P(VisionSystemSimTestWithParamsTest, YawAngles) {
231230
targetPose, photon::TargetModel{0.5_m, 0.5_m}, 3}});
232231

233232
// If the robot is rotated x deg (CCW+), the target yaw should be x deg (CW+)
234-
robotPose =
235-
frc::Pose2d{frc::Translation2d{10_m, 0_m}, frc::Rotation2d{GetParam()}};
233+
frc::Pose2d robotPose{frc::Translation2d{10_m, 0_m},
234+
frc::Rotation2d{GetParam()}};
236235
visionSysSim.Update(robotPose);
237236

238237
const auto result = camera.GetLatestResult();

shared/javacommon.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,9 @@ test {
113113
testLogging {
114114
events "failed"
115115
exceptionFormat "full"
116+
showStandardStreams = true
116117
}
118+
forkEvery = 1
117119
finalizedBy jacocoTestReport
118120
}
119121

0 commit comments

Comments
 (0)