From 8c66aa4a7b2b87d9a6f23d0c189158d8dc85b141 Mon Sep 17 00:00:00 2001 From: damencho Date: Tue, 3 Jul 2018 18:13:50 -0500 Subject: [PATCH 1/2] Limit the recorded sessions to the number of videos we keep. If there is no limit for the videos there will be no limit for the saved sessions, (leaking strings). --- .../seleniumgridextras/grid/SessionTracker.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/SeleniumGridExtras/src/main/java/com/groupon/seleniumgridextras/grid/SessionTracker.java b/SeleniumGridExtras/src/main/java/com/groupon/seleniumgridextras/grid/SessionTracker.java index 690bff5a..77dde816 100644 --- a/SeleniumGridExtras/src/main/java/com/groupon/seleniumgridextras/grid/SessionTracker.java +++ b/SeleniumGridExtras/src/main/java/com/groupon/seleniumgridextras/grid/SessionTracker.java @@ -1,15 +1,27 @@ package com.groupon.seleniumgridextras.grid; +import com.groupon.seleniumgridextras.config.*; + import java.util.LinkedList; import java.util.List; public class SessionTracker { - List sessionsRecorded = new LinkedList(); + LinkedList sessionsRecorded = new LinkedList(); public void startSession(String session) { sessionsRecorded.add(session); + + // videos to keep, and sessions to keep track of + int videosToKeep + = RuntimeConfig.getConfig().getVideoRecording().getVideosToKeep(); + if (videosToKeep > 0 + && sessionsRecorded.size() > videosToKeep) + { + // then forget the first session + sessionsRecorded.remove(); + } } public List getSessions() { From 2995889a78a19b3c629b0427893ae0db5f1a2ab5 Mon Sep 17 00:00:00 2001 From: damencho Date: Tue, 3 Jul 2018 18:14:55 -0500 Subject: [PATCH 2/2] Dispose graphics. --- .../utilities/threads/video/VideoRecorderCallable.java | 4 +++- .../seleniumgridextras/videorecording/ImageProcessor.java | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/SeleniumGridExtras/src/main/java/com/groupon/seleniumgridextras/utilities/threads/video/VideoRecorderCallable.java b/SeleniumGridExtras/src/main/java/com/groupon/seleniumgridextras/utilities/threads/video/VideoRecorderCallable.java index 5128692e..7b0dea69 100644 --- a/SeleniumGridExtras/src/main/java/com/groupon/seleniumgridextras/utilities/threads/video/VideoRecorderCallable.java +++ b/SeleniumGridExtras/src/main/java/com/groupon/seleniumgridextras/utilities/threads/video/VideoRecorderCallable.java @@ -260,7 +260,9 @@ public static BufferedImage convertToType(BufferedImage sourceImage, else { image = new BufferedImage(sourceImage.getWidth(), sourceImage.getHeight(), targetType); - image.getGraphics().drawImage(sourceImage, 0, 0, null); + Graphics g = image.getGraphics(); + g.drawImage(sourceImage, 0, 0, null); + g.dispose(); } return image; diff --git a/SeleniumGridExtras/src/main/java/com/groupon/seleniumgridextras/videorecording/ImageProcessor.java b/SeleniumGridExtras/src/main/java/com/groupon/seleniumgridextras/videorecording/ImageProcessor.java index 9e7151bc..bfce4a64 100644 --- a/SeleniumGridExtras/src/main/java/com/groupon/seleniumgridextras/videorecording/ImageProcessor.java +++ b/SeleniumGridExtras/src/main/java/com/groupon/seleniumgridextras/videorecording/ImageProcessor.java @@ -82,6 +82,7 @@ public static BufferedImage createTitleFrame(Dimension dimension, int imageType, g.setFont(new Font("TimesRoman", Font.PLAIN, 14)); g.drawString("" + line2, firstLineX, secondLineY); g.drawString("" + line3, firstLineX, thirdLineY); + g.dispose(); return image; }