SLIDER-1047 add regression test to verify latest role history format reload
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/b99a3d9b Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/b99a3d9b Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/b99a3d9b Branch: refs/heads/develop Commit: b99a3d9be786a6779d73ce32c888e05b04da5ec3 Parents: 7dc4d78 Author: Steve Loughran <ste...@apache.org> Authored: Wed Jan 6 19:23:09 2016 +0000 Committer: Steve Loughran <ste...@apache.org> Committed: Wed Jan 6 19:23:09 2016 +0000 ---------------------------------------------------------------------- .../slider/server/avro/LoadedRoleHistory.java | 11 ++++++ .../model/history/TestRoleHistoryRW.groovy | 17 +++++++++ .../slider/server/avro/history_v01b_1_role.json | 38 ++++++++++++++++++++ 3 files changed, 66 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b99a3d9b/slider-core/src/main/java/org/apache/slider/server/avro/LoadedRoleHistory.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/server/avro/LoadedRoleHistory.java b/slider-core/src/main/java/org/apache/slider/server/avro/LoadedRoleHistory.java index 3947064..77408a5 100644 --- a/slider-core/src/main/java/org/apache/slider/server/avro/LoadedRoleHistory.java +++ b/slider-core/src/main/java/org/apache/slider/server/avro/LoadedRoleHistory.java @@ -54,6 +54,7 @@ public class LoadedRoleHistory { public int size() { return records.size(); } + public RoleHistoryHeader getHeader() { return header; } @@ -78,4 +79,14 @@ public class LoadedRoleHistory { } } + @Override + public String toString() { + final StringBuilder sb = new StringBuilder( + "LoadedRoleHistory{"); + sb.append("path=").append(path); + sb.append("; number of roles=").append(roleMap.size()); + sb.append("; size=").append(size()); + sb.append('}'); + return sb.toString(); + } } http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b99a3d9b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/history/TestRoleHistoryRW.groovy ---------------------------------------------------------------------- diff --git a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/history/TestRoleHistoryRW.groovy b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/history/TestRoleHistoryRW.groovy index 72e4240..8321044 100644 --- a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/history/TestRoleHistoryRW.groovy +++ b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/history/TestRoleHistoryRW.groovy @@ -41,6 +41,7 @@ class TestRoleHistoryRW extends BaseMockAppStateTest { static long time = System.currentTimeMillis(); public static final String HISTORY_V1_6_ROLE = "org/apache/slider/server/avro/history-v01-6-role.json" public static final String HISTORY_V1_3_ROLE = "org/apache/slider/server/avro/history-v01-3-role.json" + public static final String HISTORY_V1b_1_ROLE = "org/apache/slider/server/avro/history_v01b_1_role.json" static final ProviderRole PROVIDER_ROLE3 = new ProviderRole( @@ -323,4 +324,20 @@ class TestRoleHistoryRW extends BaseMockAppStateTest { assert 0 == roleHistory.rebuild(loadedRoleHistory) } + /** + * Test that a v1b JSON file can be read. Here more roles than expected + * @throws Throwable + */ + @Test + public void testReloadDataV1b_1_role() throws Throwable { + String source = HISTORY_V1b_1_ROLE + RoleHistoryWriter writer = new RoleHistoryWriter() + + def loadedRoleHistory = writer.read(source) + assert 1 == loadedRoleHistory.size() + assert 2 == loadedRoleHistory.roleMap.size() + RoleHistory roleHistory = new MockRoleHistory(MockFactory.ROLES) + assert 0 == roleHistory.rebuild(loadedRoleHistory) + + } } http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b99a3d9b/slider-core/src/test/resources/org/apache/slider/server/avro/history_v01b_1_role.json ---------------------------------------------------------------------- diff --git a/slider-core/src/test/resources/org/apache/slider/server/avro/history_v01b_1_role.json b/slider-core/src/test/resources/org/apache/slider/server/avro/history_v01b_1_role.json new file mode 100644 index 0000000..67d644f --- /dev/null +++ b/slider-core/src/test/resources/org/apache/slider/server/avro/history_v01b_1_role.json @@ -0,0 +1,38 @@ +{ + "entry": { + "org.apache.slider.server.avro.RoleHistoryHeader": { + "version": 1, + "saved": 1450435691617, + "savedx": "151b4b44461", + "savedate": "18 Dec 2015 10:48:11 GMT", + "roles": 2 + } + } +} +{ + "entry": { + "org.apache.slider.server.avro.RoleHistoryMapping": { + "rolemap": { + "echo": 1, + "slider-appmaster": 0 + } + } + } +} +{ + "entry": { + "org.apache.slider.server.avro.NodeEntryRecord": { + "host": "192.168.56.1", + "role": 1, + "active": true, + "last_used": 0 + } + } +} +{ + "entry": { + "org.apache.slider.server.avro.RoleHistoryFooter": { + "count": 1 + } + } +}