diff --git a/src/test/java/com/googlesource/gerrit/plugins/metricsreportercloudwatch/GerritCloudwatchReporterConfigTest.java b/src/test/java/com/googlesource/gerrit/plugins/metricsreportercloudwatch/GerritCloudwatchReporterConfigTest.java
index f00ee2d..dc00d27 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/metricsreportercloudwatch/GerritCloudwatchReporterConfigTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/metricsreportercloudwatch/GerritCloudwatchReporterConfigTest.java
@@ -34,7 +34,8 @@
 public class GerritCloudwatchReporterConfigTest {
   private static final String gerritInstanceId = "testInstanceId";
   private static final String PLUGIN_NAME = "foo";
-  private final PluginConfig emptyGlobalPluginConfig = new PluginConfig(PLUGIN_NAME, new Config());
+  private final PluginConfig.Update emptyGlobalPluginConfig =
+      PluginConfig.Update.forTest(PLUGIN_NAME, new Config());
 
   GerritCloudwatchReporterConfig reporterConfig;
 
@@ -42,7 +43,8 @@
 
   @Test
   public void shouldGetAllDefaultsWhenConfigurationIsEmpty() {
-    when(configFactory.getFromGerritConfig(PLUGIN_NAME)).thenReturn(emptyGlobalPluginConfig);
+    when(configFactory.getFromGerritConfig(PLUGIN_NAME))
+        .thenReturn(emptyGlobalPluginConfig.asPluginConfig());
     reporterConfig = new GerritCloudwatchReporterConfig(configFactory, PLUGIN_NAME, null);
 
     assertThat(reporterConfig.getInitialDelay())
@@ -60,14 +62,15 @@
 
   @Test
   public void shouldReadMetricValuesFromConfiguration() {
-    PluginConfig globalPluginConfig = emptyGlobalPluginConfig;
+    PluginConfig.Update globalPluginConfig = emptyGlobalPluginConfig;
     globalPluginConfig.setString(GerritCloudwatchReporterConfig.KEY_NAMESPACE, "foobar");
     globalPluginConfig.setString(GerritCloudwatchReporterConfig.KEY_RATE, "3m");
     globalPluginConfig.setString(GerritCloudwatchReporterConfig.KEY_INITIAL_DELAY, "20s");
     globalPluginConfig.setBoolean(GerritCloudwatchReporterConfig.KEY_DRYRUN, true);
     globalPluginConfig.setBoolean(GerritCloudwatchReporterConfig.KEY_JVM_METRICS, true);
 
-    when(configFactory.getFromGerritConfig(PLUGIN_NAME)).thenReturn(globalPluginConfig);
+    when(configFactory.getFromGerritConfig(PLUGIN_NAME))
+        .thenReturn(globalPluginConfig.asPluginConfig());
     reporterConfig =
         new GerritCloudwatchReporterConfig(configFactory, PLUGIN_NAME, gerritInstanceId);
 
@@ -81,11 +84,12 @@
 
   @Test
   public void shouldReadCorrectExclusionFilter() {
-    PluginConfig globalPluginConfig = emptyGlobalPluginConfig;
+    PluginConfig.Update globalPluginConfig = emptyGlobalPluginConfig;
     globalPluginConfig.setStringList(
         GerritCloudwatchReporterConfig.KEY_EXCLUDE_METRICS, Arrays.asList("foo.*", ".*bar"));
 
-    when(configFactory.getFromGerritConfig(PLUGIN_NAME)).thenReturn(globalPluginConfig);
+    when(configFactory.getFromGerritConfig(PLUGIN_NAME))
+        .thenReturn(globalPluginConfig.asPluginConfig());
     reporterConfig =
         new GerritCloudwatchReporterConfig(configFactory, PLUGIN_NAME, gerritInstanceId);
 
@@ -98,11 +102,12 @@
   @Test
   public void shouldThrowAnExceptionWhenExcludeMetricsRegexIsNotValid() {
     final String INVALID_REGEXP = "[[?";
-    PluginConfig globalPluginConfig = emptyGlobalPluginConfig;
+    PluginConfig.Update globalPluginConfig = emptyGlobalPluginConfig;
     globalPluginConfig.setString(
         GerritCloudwatchReporterConfig.KEY_EXCLUDE_METRICS, INVALID_REGEXP);
 
-    when(configFactory.getFromGerritConfig(PLUGIN_NAME)).thenReturn(globalPluginConfig);
+    when(configFactory.getFromGerritConfig(PLUGIN_NAME))
+        .thenReturn(globalPluginConfig.asPluginConfig());
 
     assertThrows(
         PatternSyntaxException.class,
