From 53f2ed7b77c4e809e6856a754b886fd689657cf5 Mon Sep 17 00:00:00 2001 From: Yash Pal Date: Tue, 14 Jan 2025 20:47:37 +0530 Subject: [PATCH 1/2] Add test for PriorityStrategy abstract class --- .../priority/PriorityStrategyTest.java | 125 ++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 src/test/java/jenkins/advancedqueue/priority/PriorityStrategyTest.java diff --git a/src/test/java/jenkins/advancedqueue/priority/PriorityStrategyTest.java b/src/test/java/jenkins/advancedqueue/priority/PriorityStrategyTest.java new file mode 100644 index 00000000..86396b09 --- /dev/null +++ b/src/test/java/jenkins/advancedqueue/priority/PriorityStrategyTest.java @@ -0,0 +1,125 @@ +package jenkins.advancedqueue.priority; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import hudson.DescriptorExtensionList; +import hudson.model.Action; +import hudson.model.Descriptor; +import hudson.model.FreeStyleProject; +import hudson.model.Queue; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; +import org.junit.BeforeClass; +import org.junit.ClassRule; +import org.junit.Test; +import org.jvnet.hudson.test.JenkinsRule; + +public class PriorityStrategyTest { + + @ClassRule + public static JenkinsRule j = new JenkinsRule(); + + private static PriorityStrategy strategy; + private static Queue.Item item; + private static FreeStyleProject project; + private static Action action; + + @BeforeClass + public static void setUp() throws IOException { + project = j.createFreeStyleProject(); + strategy = new TestPriorityStrategy(); + action = new Action() { + /** + */ + @Override + public String getIconFileName() { + return ""; + } + + /** + */ + @Override + public String getDisplayName() { + return ""; + } + + /** + */ + @Override + public String getUrlName() { + return ""; + } + }; + List actions = new ArrayList<>(); + actions.add(action); + item = new Queue.WaitingItem(Calendar.getInstance(), project, actions); + } + + @Test + public void testIsApplicable() { + boolean result = strategy.isApplicable(item); + assertTrue(result); + } + + @Test + public void testGetPriority() { + int priority = strategy.getPriority(item); + assertEquals(5, priority); + } + + @Test + public void testNumberPrioritiesUpdates() { + strategy.numberPrioritiesUpdates(3, 5); + // Add assertions to verify the behavior + TestPriorityStrategy testStrategy = new TestPriorityStrategy(); + assertEquals(3, testStrategy.getOldNumberOfPriorities()); + assertEquals(5, testStrategy.getNewNumberOfPriorities()); + } + + @Test + public void testAll() { + DescriptorExtensionList> list = PriorityStrategy.all(); + assertNotNull("DescriptorExtensionList should not be null", list); + } + + private static class TestPriorityStrategy extends PriorityStrategy { + private int oldNumberOfPriorities = 3; + private int newNumberOfPriorities = 5; + + @Override + public boolean isApplicable(Queue.Item item) { + return item.task instanceof FreeStyleProject; + } + + @Override + public int getPriority(Queue.Item item) { + return 5; + } + + @Override + public void numberPrioritiesUpdates(int oldNumberOfPriorities, int newNumberOfPriorities) { + this.oldNumberOfPriorities = oldNumberOfPriorities; + this.newNumberOfPriorities = newNumberOfPriorities; + } + + public int getOldNumberOfPriorities() { + return oldNumberOfPriorities; + } + + public int getNewNumberOfPriorities() { + return newNumberOfPriorities; + } + + /** + * + */ + @Override + public Descriptor getDescriptor() { + return null; + } + } +} From 4eafe5272e3082a799691534054d07ff768b5e11 Mon Sep 17 00:00:00 2001 From: Yash Pal Date: Tue, 14 Jan 2025 20:53:28 +0530 Subject: [PATCH 2/2] # This is a combination of 3 commits. # This is the 1st commit message: Add createActionAndItem method to initialize - action and item for tests - typo fix -Add item.task instance of Job test --- .../priority/PriorityStrategy.java | 4 +-- .../priority/PriorityStrategyTest.java | 25 ++++++++++++------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/main/java/jenkins/advancedqueue/priority/PriorityStrategy.java b/src/main/java/jenkins/advancedqueue/priority/PriorityStrategy.java index 882d850b..a4a15934 100644 --- a/src/main/java/jenkins/advancedqueue/priority/PriorityStrategy.java +++ b/src/main/java/jenkins/advancedqueue/priority/PriorityStrategy.java @@ -41,7 +41,7 @@ public abstract class PriorityStrategy implements ExtensionPoint, Describabletrue if the {@link PriorityStrategy} is applicable else false @@ -52,7 +52,7 @@ public abstract class PriorityStrategy implements ExtensionPoint, Describable> list = PriorityStrategy.all(); assertNotNull("DescriptorExtensionList should not be null", list); + // The list.size() method returns 7 because the DescriptorExtensionList for PriorityStrategy contains 7 + // descriptors. This means there are 7 different implementations of the PriorityStrategy class registered in the + // Jenkins instance. + assertEquals(7, list.size()); + } + + @Test + public void testItemTaskIsInstanceOfJob() { + item = new Queue.WaitingItem(Calendar.getInstance(), project, new ArrayList<>()); + assertTrue(item.task instanceof Job); } private static class TestPriorityStrategy extends PriorityStrategy { @@ -114,9 +124,6 @@ public int getNewNumberOfPriorities() { return newNumberOfPriorities; } - /** - * - */ @Override public Descriptor getDescriptor() { return null;