From 893ed0fe7ea71fa817e0321ff8f4cc2411b2a047 Mon Sep 17 00:00:00 2001 From: Young Gyu Park Date: Tue, 30 Oct 2018 10:56:30 +0900 Subject: Adding unit test for HalApiEntity Test: go/vts-web-staging Bug: 117130291 Change-Id: If962121e4506193a2f664611e9d79eadefd33e02 --- .../com/android/vts/api/DataRestServletTest.java | 34 +++++++---- .../vts/api/VtsSpreadSheetSyncServletTest.java | 70 ++++++++++++++++++---- .../vts/entity/ApiCoverageExcludedEntityTest.java | 1 + .../vts/entity/TestAcknowledgmentEntityTest.java | 44 +++++++------- .../android/vts/job/VtsAlertJobServletTest.java | 23 ++++--- .../vts/job/VtsPerformanceJobServletTest.java | 13 ++-- .../vts/job/VtsProfilingStatsJobServletTest.java | 13 ++-- 7 files changed, 131 insertions(+), 67 deletions(-) diff --git a/src/test/java/com/android/vts/api/DataRestServletTest.java b/src/test/java/com/android/vts/api/DataRestServletTest.java index 7d21707..b01c761 100644 --- a/src/test/java/com/android/vts/api/DataRestServletTest.java +++ b/src/test/java/com/android/vts/api/DataRestServletTest.java @@ -16,6 +16,8 @@ package com.android.vts.api; +import com.android.vts.entity.BranchEntity; +import com.android.vts.entity.BuildTargetEntity; import com.android.vts.entity.DeviceInfoEntity; import com.android.vts.entity.TestEntity; import com.android.vts.entity.TestRunEntity; @@ -25,6 +27,7 @@ import com.googlecode.objectify.Key; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mock; +import org.mockito.Spy; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; @@ -36,13 +39,14 @@ import java.util.LinkedList; import static com.googlecode.objectify.ObjectifyService.factory; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.when; public class DataRestServletTest extends ObjectifyTestBase { private Gson gson; + @Spy private DataRestServlet servlet; + @Mock private HttpServletRequest request; @Mock private HttpServletResponse response; @@ -54,8 +58,20 @@ public class DataRestServletTest extends ObjectifyTestBase { factory().register(TestEntity.class); factory().register(TestRunEntity.class); + factory().register(BranchEntity.class); + factory().register(BuildTargetEntity.class); factory().register(DeviceInfoEntity.class); + BranchEntity branchEntity1 = new BranchEntity("master"); + branchEntity1.save(); + BranchEntity branchEntity2 = new BranchEntity("pi"); + branchEntity2.save(); + + BuildTargetEntity buildTargetEntity1 = new BuildTargetEntity("aosp_arm64_ab-userdebug"); + buildTargetEntity1.save(); + BuildTargetEntity buildTargetEntity2 = new BuildTargetEntity("sailfish-userdebug"); + buildTargetEntity2.save(); + Key testParentKey = Key.create(TestEntity.class, "test1"); Key testRunParentKey = Key.create(testParentKey, TestRunEntity.class, 1); DeviceInfoEntity deviceInfoEntity1 = @@ -87,14 +103,14 @@ public class DataRestServletTest extends ObjectifyTestBase { public void testBranchData() throws IOException, ServletException { when(request.getPathInfo()).thenReturn("/branch"); + when(request.getParameter("schKey")).thenReturn("*"); StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); when(response.getWriter()).thenReturn(pw); - DataRestServlet dataRestServlet = new DataRestServlet(); - dataRestServlet.doGet(request, response); + servlet.doGet(request, response); String result = sw.getBuffer().toString().trim(); LinkedList resultList = gson.fromJson(result, LinkedList.class); @@ -108,26 +124,18 @@ public class DataRestServletTest extends ObjectifyTestBase { public void testDeviceData() throws IOException, ServletException { when(request.getPathInfo()).thenReturn("/device"); + when(request.getParameter("schKey")).thenReturn("*"); StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); when(response.getWriter()).thenReturn(pw); - DataRestServlet dataRestServlet = new DataRestServlet(); - dataRestServlet.doGet(request, response); + servlet.doGet(request, response); String result = sw.getBuffer().toString().trim(); LinkedList resultList = gson.fromJson(result, LinkedList.class); - String value = "1"; - int charValue = value.charAt(0); - String next = String.valueOf((char) (charValue + 1)); - System.out.println(next); - - String s = "asb"; - System.out.println(s.replace("[.]$", "")); - assertTrue(s.charAt(0) == s.charAt(s.length() - 1)); assertEquals(resultList.size(), 2); assertEquals(resultList.get(0), "aosp_arm64_ab-userdebug"); assertEquals(resultList.get(1), "sailfish-userdebug"); diff --git a/src/test/java/com/android/vts/api/VtsSpreadSheetSyncServletTest.java b/src/test/java/com/android/vts/api/VtsSpreadSheetSyncServletTest.java index f6e3694..661ea9e 100644 --- a/src/test/java/com/android/vts/api/VtsSpreadSheetSyncServletTest.java +++ b/src/test/java/com/android/vts/api/VtsSpreadSheetSyncServletTest.java @@ -19,57 +19,101 @@ package com.android.vts.api; import com.android.vts.entity.ApiCoverageExcludedEntity; import com.android.vts.job.VtsSpreadSheetSyncServlet; import com.android.vts.util.ObjectifyTestBase; +import com.google.api.client.extensions.appengine.datastore.AppEngineDataStoreFactory; +import com.google.api.services.sheets.v4.SheetsScopes; import com.google.gson.Gson; +import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mock; +import org.mockito.Spy; import javax.servlet.ServletConfig; +import javax.servlet.ServletContext; import javax.servlet.ServletException; +import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.FileNotFoundException; import java.io.IOException; -import java.io.PrintWriter; -import java.io.StringWriter; +import java.io.InputStream; +import java.util.Collections; import java.util.List; +import java.util.Properties; import static com.googlecode.objectify.ObjectifyService.factory; import static com.googlecode.objectify.ObjectifyService.ofy; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.when; +@Slf4j public class VtsSpreadSheetSyncServletTest extends ObjectifyTestBase { private Gson gson; + @Spy private VtsSpreadSheetSyncServlet servlet; + @Mock private HttpServletRequest request; @Mock private HttpServletResponse response; - @Mock ServletConfig servletConfig; + @Mock private ServletContext context; + + @Mock private ServletConfig servletConfig; + + @Mock private ServletOutputStream outputStream; + + private final AppEngineDataStoreFactory DATA_STORE_FACTORY = new AppEngineDataStoreFactory(); + + private final List GOOGLE_API_SCOPES = + Collections.singletonList(SheetsScopes.SPREADSHEETS_READONLY); /** It be executed before each @Test method */ @BeforeEach void setUpExtra() { + + factory().register(ApiCoverageExcludedEntity.class); + gson = new Gson(); + + Properties systemConfigProp = new Properties(); + + InputStream defaultInputStream = + VtsSpreadSheetSyncServletTest.class + .getClassLoader() + .getResourceAsStream("config.properties"); + + try { + systemConfigProp.load(defaultInputStream); + } catch (FileNotFoundException e) { + log.error(e.getMessage()); + } catch (IOException e) { + log.error(e.getMessage()); + } + + when(request.getServletContext()).thenReturn(context); + when(request.getServletContext().getAttribute("dataStoreFactory")) + .thenReturn(DATA_STORE_FACTORY); + when(request.getServletContext().getAttribute("googleApiScopes")) + .thenReturn(GOOGLE_API_SCOPES); + + when(servletConfig.getServletContext()).thenReturn(context); + when(servletConfig.getServletContext().getAttribute("systemConfigProp")) + .thenReturn(systemConfigProp); + } @Test public void testSyncServletJob() throws IOException, ServletException { - factory().register(ApiCoverageExcludedEntity.class); - when(request.getPathInfo()).thenReturn("/cron/vts_spreadsheet_sync_job"); - StringWriter sw = new StringWriter(); - PrintWriter pw = new PrintWriter(sw); - - when(response.getWriter()).thenReturn(pw); + when(servlet.getServletConfig()).thenReturn(servletConfig); + when(response.getOutputStream()).thenReturn(outputStream); - VtsSpreadSheetSyncServlet vtsSpreadSheetSyncServlet = new VtsSpreadSheetSyncServlet(); - vtsSpreadSheetSyncServlet.init(servletConfig); - vtsSpreadSheetSyncServlet.doGet(request, response); - String result = sw.getBuffer().toString().trim(); + servlet.init(servletConfig); + servlet.doGet(request, response); + String result = outputStream.toString().trim(); List apiCoverageExcludedEntityList = ofy().load().type(ApiCoverageExcludedEntity.class).list(); diff --git a/src/test/java/com/android/vts/entity/ApiCoverageExcludedEntityTest.java b/src/test/java/com/android/vts/entity/ApiCoverageExcludedEntityTest.java index 4fa9b2a..40d3af9 100644 --- a/src/test/java/com/android/vts/entity/ApiCoverageExcludedEntityTest.java +++ b/src/test/java/com/android/vts/entity/ApiCoverageExcludedEntityTest.java @@ -46,6 +46,7 @@ public class ApiCoverageExcludedEntityTest extends ObjectifyTestBase { @Test public void getUrlSafeKeyTest() { + factory().register(CodeCoverageEntity.class); factory().register(ApiCoverageExcludedEntity.class); Key testParentKey = Key.create(TestEntity.class, "test1"); diff --git a/src/test/java/com/android/vts/entity/TestAcknowledgmentEntityTest.java b/src/test/java/com/android/vts/entity/TestAcknowledgmentEntityTest.java index cf9c322..8ed68b6 100644 --- a/src/test/java/com/android/vts/entity/TestAcknowledgmentEntityTest.java +++ b/src/test/java/com/android/vts/entity/TestAcknowledgmentEntityTest.java @@ -68,7 +68,7 @@ public class TestAcknowledgmentEntityTest { Assert.assertNotNull(e); Assert.assertEquals(key, e.getProperty(TestAcknowledgmentEntity.TEST_KEY)); - Assert.assertEquals(user, e.getProperty(TestAcknowledgmentEntity.USER)); + Assert.assertEquals(user, e.getProperty(TestAcknowledgmentEntity.USER_OBJ)); Assert.assertTrue( ((List) e.getProperty(TestAcknowledgmentEntity.BRANCHES)) .containsAll(branches)); @@ -83,11 +83,11 @@ public class TestAcknowledgmentEntityTest { TestAcknowledgmentEntity deserialized = TestAcknowledgmentEntity.fromEntity(e); Assert.assertNotNull(deserialized); Assert.assertEquals(key, deserialized.test); - Assert.assertEquals(user, deserialized.user); - Assert.assertTrue(deserialized.branches.containsAll(branches)); - Assert.assertTrue(deserialized.devices.containsAll(devices)); - Assert.assertTrue(deserialized.testCaseNames.containsAll(testCaseNames)); - Assert.assertEquals(note.getValue(), deserialized.note); + Assert.assertEquals(user, deserialized.getUserObj()); + Assert.assertTrue(deserialized.getBranches().containsAll(branches)); + Assert.assertTrue(deserialized.getDevices().containsAll(devices)); + Assert.assertTrue(deserialized.getTestCaseNames().containsAll(testCaseNames)); + Assert.assertEquals(note.getValue(), deserialized.getNote()); } /** Test serialization to/from Entity objects when optional parameters are null. */ @@ -101,7 +101,7 @@ public class TestAcknowledgmentEntityTest { Assert.assertNotNull(e); Assert.assertEquals(key, e.getProperty(TestAcknowledgmentEntity.TEST_KEY)); - Assert.assertEquals(user, e.getProperty(TestAcknowledgmentEntity.USER)); + Assert.assertEquals(user, e.getProperty(TestAcknowledgmentEntity.USER_OBJ)); Assert.assertFalse(e.hasProperty(TestAcknowledgmentEntity.BRANCHES)); Assert.assertFalse(e.hasProperty(TestAcknowledgmentEntity.DEVICES)); Assert.assertFalse(e.hasProperty(TestAcknowledgmentEntity.TEST_CASE_NAMES)); @@ -110,11 +110,11 @@ public class TestAcknowledgmentEntityTest { TestAcknowledgmentEntity deserialized = TestAcknowledgmentEntity.fromEntity(e); Assert.assertNotNull(deserialized); Assert.assertEquals(key, deserialized.test); - Assert.assertEquals(user, deserialized.user); - Assert.assertEquals(0, deserialized.branches.size()); - Assert.assertEquals(0, deserialized.devices.size()); - Assert.assertEquals(0, deserialized.testCaseNames.size()); - Assert.assertNull(deserialized.note); + Assert.assertEquals(user, deserialized.getUserObj()); + Assert.assertEquals(0, deserialized.getBranches().size()); + Assert.assertEquals(0, deserialized.getDevices().size()); + Assert.assertEquals(0, deserialized.getTestCaseNames().size()); + Assert.assertNull(deserialized.getNote()); } /** Test serialization to/from Json objects. */ @@ -138,11 +138,11 @@ public class TestAcknowledgmentEntityTest { TestAcknowledgmentEntity deserialized = TestAcknowledgmentEntity.fromJson(user, json); Assert.assertNotNull(deserialized); Assert.assertEquals(key, deserialized.test); - Assert.assertEquals(user, deserialized.user); - Assert.assertTrue(deserialized.branches.containsAll(branches)); - Assert.assertTrue(deserialized.devices.containsAll(devices)); - Assert.assertTrue(deserialized.testCaseNames.containsAll(testCaseNames)); - Assert.assertEquals(note.getValue(), deserialized.note); + Assert.assertEquals(user, deserialized.getUserObj()); + Assert.assertTrue(deserialized.getBranches().containsAll(branches)); + Assert.assertTrue(deserialized.getDevices().containsAll(devices)); + Assert.assertTrue(deserialized.getTestCaseNames().containsAll(testCaseNames)); + Assert.assertEquals(note.getValue(), deserialized.getNote()); } /** Test serialization to/from Json objects when optional properties are null. */ @@ -159,10 +159,10 @@ public class TestAcknowledgmentEntityTest { TestAcknowledgmentEntity deserialized = TestAcknowledgmentEntity.fromJson(user, json); Assert.assertNotNull(deserialized); Assert.assertEquals(key, deserialized.test); - Assert.assertEquals(user, deserialized.user); - Assert.assertEquals(0, deserialized.branches.size()); - Assert.assertEquals(0, deserialized.devices.size()); - Assert.assertEquals(0, deserialized.testCaseNames.size()); - Assert.assertEquals("", deserialized.note); + Assert.assertEquals(user, deserialized.getUserObj()); + Assert.assertEquals(0, deserialized.getBranches().size()); + Assert.assertEquals(0, deserialized.getDevices().size()); + Assert.assertEquals(0, deserialized.getTestCaseNames().size()); + Assert.assertEquals("", deserialized.getNote()); } } diff --git a/src/test/java/com/android/vts/job/VtsAlertJobServletTest.java b/src/test/java/com/android/vts/job/VtsAlertJobServletTest.java index 7f88af8..9c24c65 100644 --- a/src/test/java/com/android/vts/job/VtsAlertJobServletTest.java +++ b/src/test/java/com/android/vts/job/VtsAlertJobServletTest.java @@ -16,11 +16,13 @@ package com.android.vts.job; +import static com.googlecode.objectify.ObjectifyService.factory; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import com.android.vts.entity.DeviceInfoEntity; import com.android.vts.entity.TestAcknowledgmentEntity; +import com.android.vts.util.ObjectifyTestBase; import com.google.appengine.api.datastore.Key; import com.google.appengine.api.datastore.KeyFactory; import com.google.appengine.api.users.User; @@ -31,11 +33,12 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -public class VtsAlertJobServletTest { +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.BeforeEach; + +public class VtsAlertJobServletTest extends ObjectifyTestBase { private final LocalServiceTestHelper userHelper = new LocalServiceTestHelper(new LocalUserServiceTestConfig()) .setEnvIsAdmin(true) @@ -48,8 +51,11 @@ public class VtsAlertJobServletTest { private Set allTestCases; private List allDevices; - @Before - public void setUp() { + @BeforeEach + void setUpExtra() { + factory().register(DeviceInfoEntity.class); + factory().register(TestAcknowledgmentEntity.class); + userHelper.setUp(); user = UserServiceFactory.getUserService().getCurrentUser(); @@ -71,7 +77,7 @@ public class VtsAlertJobServletTest { allDevices.add(device2); } - @After + @AfterEach public void tearDown() { userHelper.tearDown(); } @@ -79,6 +85,7 @@ public class VtsAlertJobServletTest { /** Test that acknowledge-all works correctly. */ @Test public void testSeparateAcknowledgedAll() { + Set testCases = new HashSet<>(allTestCases); List acks = new ArrayList<>(); TestAcknowledgmentEntity ack = @@ -95,6 +102,7 @@ public class VtsAlertJobServletTest { /** Test that specific branch/device/test case acknowledgement works correctly. */ @Test public void testSeparateAcknowledgedSpecific() { + Set testCases = new HashSet<>(allTestCases); List acks = new ArrayList<>(); List branches = new ArrayList<>(); @@ -120,6 +128,7 @@ public class VtsAlertJobServletTest { /** Test that specific branch/device/test case acknowledgement skips device mismatches. */ @Test public void testSeparateAcknowledgedSpecificMismatch() { + Set testCases = new HashSet<>(allTestCases); List acks = new ArrayList<>(); List branches = new ArrayList<>(); diff --git a/src/test/java/com/android/vts/job/VtsPerformanceJobServletTest.java b/src/test/java/com/android/vts/job/VtsPerformanceJobServletTest.java index ba73453..814ab3a 100644 --- a/src/test/java/com/android/vts/job/VtsPerformanceJobServletTest.java +++ b/src/test/java/com/android/vts/job/VtsPerformanceJobServletTest.java @@ -21,6 +21,7 @@ import static org.junit.Assert.assertEquals; import com.android.vts.entity.ProfilingPointEntity; import com.android.vts.entity.ProfilingPointSummaryEntity; import com.android.vts.proto.VtsReportMessage.VtsProfilingRegressionMode; +import com.android.vts.util.ObjectifyTestBase; import com.android.vts.util.PerformanceSummary; import com.android.vts.util.ProfilingPointSummary; import com.android.vts.util.StatSummary; @@ -36,11 +37,11 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; -public class VtsPerformanceJobServletTest { +public class VtsPerformanceJobServletTest extends ObjectifyTestBase { private final LocalServiceTestHelper helper = new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig()); @@ -101,12 +102,12 @@ public class VtsPerformanceJobServletTest { assertEquals(baseline, text); } - @Before + @BeforeEach public void setUp() { helper.setUp(); } - @After + @AfterEach public void tearDown() { helper.tearDown(); } diff --git a/src/test/java/com/android/vts/job/VtsProfilingStatsJobServletTest.java b/src/test/java/com/android/vts/job/VtsProfilingStatsJobServletTest.java index 5ed748e..36637a3 100644 --- a/src/test/java/com/android/vts/job/VtsProfilingStatsJobServletTest.java +++ b/src/test/java/com/android/vts/job/VtsProfilingStatsJobServletTest.java @@ -28,6 +28,7 @@ import com.android.vts.entity.ProfilingPointSummaryEntity; import com.android.vts.entity.TestEntity; import com.android.vts.entity.TestRunEntity; import com.android.vts.proto.VtsReportMessage; +import com.android.vts.util.ObjectifyTestBase; import com.android.vts.util.StatSummary; import com.android.vts.util.TimeUtil; import com.google.appengine.api.datastore.DatastoreService; @@ -55,11 +56,11 @@ import java.util.List; import java.util.Set; import java.util.concurrent.TimeUnit; import org.apache.commons.math3.stat.descriptive.moment.Mean; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; -public class VtsProfilingStatsJobServletTest { +public class VtsProfilingStatsJobServletTest extends ObjectifyTestBase { private final LocalServiceTestHelper helper = new LocalServiceTestHelper( new LocalDatastoreServiceTestConfig(), @@ -67,12 +68,12 @@ public class VtsProfilingStatsJobServletTest { .setQueueXmlPath("src/main/webapp/WEB-INF/queue.xml")); private static final double THRESHOLD = 1e-10; - @Before + @BeforeEach public void setUp() { helper.setUp(); } - @After + @AfterEach public void tearDown() { helper.tearDown(); } -- cgit v1.2.3