geode-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From kl...@apache.org
Subject incubator-geode git commit: GEODE-2013: throw IllegalStateException if resource type is missing
Date Thu, 03 Nov 2016 21:57:11 GMT
Repository: incubator-geode
Updated Branches:
  refs/heads/develop aa05b5d2c -> 80026a7d6


GEODE-2013: throw IllegalStateException if resource type is missing


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/80026a7d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/80026a7d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/80026a7d

Branch: refs/heads/develop
Commit: 80026a7d63434186819dc15fc8f0c455e07286a5
Parents: aa05b5d
Author: Kirk Lund <klund@apache.org>
Authored: Wed Nov 2 13:01:05 2016 -0700
Committer: Kirk Lund <klund@apache.org>
Committed: Thu Nov 3 13:52:19 2016 -0700

----------------------------------------------------------------------
 .../internal/statistics/StatArchiveReader.java  |   5 ++
 ...veWithMissingResourceTypeRegressionTest.java |  65 +++++++++++++++++++
 ...iveWithMissingResourceTypeRegressionTest.gfs | Bin 0 -> 253 bytes
 3 files changed, 70 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/80026a7d/geode-core/src/main/java/org/apache/geode/internal/statistics/StatArchiveReader.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/statistics/StatArchiveReader.java
b/geode-core/src/main/java/org/apache/geode/internal/statistics/StatArchiveReader.java
index ca1a6c4..9fba511 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/statistics/StatArchiveReader.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/statistics/StatArchiveReader.java
@@ -3228,6 +3228,11 @@ public class StatArchiveReader implements StatArchiveFormat {
       if ((resourceInstId + 1) > this.resourceInstSize) {
         this.resourceInstSize = resourceInstId + 1;
       }
+      ResourceType type = resourceTypeTable[resourceTypeId];
+      if (type == null) {
+        throw new IllegalStateException(
+            "ResourceType is missing for resourceTypeId " + resourceTypeId);
+      }
       boolean loadInstance = loadInstance(name, id, resourceTypeTable[resourceTypeId]);
       resourceInstTable[resourceInstId] = new ResourceInst(this, resourceInstId, name, id,
           resourceTypeTable[resourceTypeId], loadInstance);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/80026a7d/geode-core/src/test/java/org/apache/geode/internal/statistics/StatArchiveWithMissingResourceTypeRegressionTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/internal/statistics/StatArchiveWithMissingResourceTypeRegressionTest.java
b/geode-core/src/test/java/org/apache/geode/internal/statistics/StatArchiveWithMissingResourceTypeRegressionTest.java
new file mode 100644
index 0000000..73d6739
--- /dev/null
+++ b/geode-core/src/test/java/org/apache/geode/internal/statistics/StatArchiveWithMissingResourceTypeRegressionTest.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+ * agreements. See the NOTICE file distributed with this work for additional information
regarding
+ * copyright ownership. The ASF licenses this file to You under the Apache License, Version
2.0 (the
+ * "License"); you may not use this file except in compliance with the License. You may obtain
a
+ * copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under
the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express
+ * or implied. See the License for the specific language governing permissions and limitations
under
+ * the License.
+ */
+package org.apache.geode.internal.statistics;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.geode.test.junit.categories.IntegrationTest;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.rules.TemporaryFolder;
+
+import java.io.File;
+import java.net.URL;
+
+@Category(IntegrationTest.class)
+public class StatArchiveWithMissingResourceTypeRegressionTest {
+
+  private static final String ARCHIVE_FILE_NAME =
+      StatArchiveWithMissingResourceTypeRegressionTest.class.getSimpleName() + ".gfs";
+
+  private File archiveFile;
+
+  @Rule
+  public TemporaryFolder temporaryFolder = new TemporaryFolder();
+
+  @Before
+  public void setUp() throws Exception {
+    URL url = getClass().getResource(ARCHIVE_FILE_NAME);
+    assertThat(url).isNotNull(); // precondition
+
+    this.archiveFile = this.temporaryFolder.newFile(ARCHIVE_FILE_NAME);
+    FileUtils.copyURLToFile(url, this.archiveFile);
+    assertThat(this.archiveFile).exists(); // precondition
+  }
+
+  @After
+  public void tearDown() throws Exception {
+    StatisticsTypeFactoryImpl.clear();
+  }
+
+  @Test // fixed GEODE-2013
+  public void throwsIllegalStateExceptionWithMessage() throws Exception {
+    assertThatThrownBy(() -> new StatArchiveReader(new File[] {this.archiveFile}, null,
true))
+        .isExactlyInstanceOf(IllegalStateException.class) // was NullPointerException
+        .hasMessage("ResourceType is missing for resourceTypeId 0"); // was null
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/80026a7d/geode-core/src/test/resources/org/apache/geode/internal/statistics/StatArchiveWithMissingResourceTypeRegressionTest.gfs
----------------------------------------------------------------------
diff --git a/geode-core/src/test/resources/org/apache/geode/internal/statistics/StatArchiveWithMissingResourceTypeRegressionTest.gfs
b/geode-core/src/test/resources/org/apache/geode/internal/statistics/StatArchiveWithMissingResourceTypeRegressionTest.gfs
new file mode 100755
index 0000000..b071642
Binary files /dev/null and b/geode-core/src/test/resources/org/apache/geode/internal/statistics/StatArchiveWithMissingResourceTypeRegressionTest.gfs
differ


Mime
View raw message