From 1d6c35a5ea4426f4b55a6c06d93330b0e5a7bbac Mon Sep 17 00:00:00 2001 From: HÃ¥kon Hallingstad Date: Thu, 16 Apr 2020 09:54:46 +0200 Subject: More descriptive message when mistyping flag data field --- .../controller/api/systemflags/v1/SystemFlagsDataArchive.java | 6 +++++- .../controller/api/systemflags/v1/SystemFlagsDataArchiveTest.java | 7 ++++++- 2 files changed, 11 insertions(+), 2 deletions(-) (limited to 'controller-api') diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/systemflags/v1/SystemFlagsDataArchive.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/systemflags/v1/SystemFlagsDataArchive.java index 6604da144b9..05c5acfda06 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/systemflags/v1/SystemFlagsDataArchive.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/systemflags/v1/SystemFlagsDataArchive.java @@ -164,7 +164,11 @@ public class SystemFlagsDataArchive { String normalizedRawData = removeCommentsFromJson(rawData); if (!JSON.equals(serializedData, normalizedRawData)) { throw new IllegalArgumentException(filePath + " contains unknown non-comment fields: " + - "was deserialized to " + serializedData); + "after removing any comment fields the JSON is:\n " + + normalizedRawData + + "\nbut deserializing this ended up with a JSON that are missing some of the fields:\n " + + serializedData + + "\nSee https://git.ouroath.com/vespa/hosted-feature-flags for more info on the JSON syntax"); } } builder.addFile(filename, flagData); diff --git a/controller-api/src/test/java/com/yahoo/vespa/hosted/controller/api/systemflags/v1/SystemFlagsDataArchiveTest.java b/controller-api/src/test/java/com/yahoo/vespa/hosted/controller/api/systemflags/v1/SystemFlagsDataArchiveTest.java index 5ff1cbf7530..509de30fd44 100644 --- a/controller-api/src/test/java/com/yahoo/vespa/hosted/controller/api/systemflags/v1/SystemFlagsDataArchiveTest.java +++ b/controller-api/src/test/java/com/yahoo/vespa/hosted/controller/api/systemflags/v1/SystemFlagsDataArchiveTest.java @@ -109,7 +109,12 @@ public class SystemFlagsDataArchiveTest { @Test public void throws_on_unknown_field() { expectedException.expect(IllegalArgumentException.class); - expectedException.expectMessage("flags/my-test-flag/main.prod.us-west-1.json contains unknown non-comment fields: was deserialized to {\"id\":\"my-test-flag\",\"rules\":[{\"value\":\"default\"}]}"); + expectedException.expectMessage( + "flags/my-test-flag/main.prod.us-west-1.json contains unknown non-comment fields: after removing any comment fields the JSON is:\n" + + " {\"id\":\"my-test-flag\",\"rules\":[{\"condition\":[{\"type\":\"whitelist\",\"dimension\":\"hostname\",\"values\":[\"foo.com\"]}],\"value\":\"default\"}]}\n" + + "but deserializing this ended up with a JSON that are missing some of the fields:\n" + + " {\"id\":\"my-test-flag\",\"rules\":[{\"value\":\"default\"}]}\n" + + "See https://git.ouroath.com/vespa/hosted-feature-flags for more info on the JSON syntax"); SystemFlagsDataArchive.fromDirectory(Paths.get("src/test/resources/system-flags-with-unknown-field-name/")); } -- cgit v1.2.3