adding test case to debug perf issue
diff --git a/src/test/java/com/networknt/schema/JsonSchemaTest.java b/src/test/java/com/networknt/schema/JsonSchemaTest.java
index ec485c6..f36e8c8 100644
--- a/src/test/java/com/networknt/schema/JsonSchemaTest.java
+++ b/src/test/java/com/networknt/schema/JsonSchemaTest.java
@@ -125,6 +125,11 @@
}
@Test
+ public void testComplexSchema() throws Exception {
+ runTestFile("tests/optional/complex.json");
+ }
+
+ @Test
public void testZeroTerminatedFloatsValidator() throws Exception {
runTestFile("tests/optional/zeroTerminatedFloats.json");
}
diff --git a/src/test/resources/tests/optional/complex.json b/src/test/resources/tests/optional/complex.json
new file mode 100644
index 0000000..e889422
--- /dev/null
+++ b/src/test/resources/tests/optional/complex.json
@@ -0,0 +1,881 @@
+[
+ {
+ "description": "test on complex schema",
+ "schema": {
+ "additionalProperties" : false,
+ "type" : "object",
+ "properties" : {
+ "prop249" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "additionalItems" : false,
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ }
+ } ]
+ },
+ "prop398" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "additionalProperties" : false,
+ "type" : "object",
+ "properties" : {
+ "prop395" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "string"
+ } ]
+ },
+ "prop397" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "string"
+ } ]
+ },
+ "prop389" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "string"
+ } ]
+ },
+ "prop396" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "string"
+ } ]
+ }
+ },
+ "required" : [ ]
+ } ]
+ },
+ "prop388" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "boolean"
+ } ]
+ },
+ "lockinbenefits" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "additionalProperties" : false,
+ "type" : "object",
+ "properties" : {
+ "freeShipping" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "additionalProperties" : false,
+ "type" : "object",
+ "properties" : {
+ "actualBenefit" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "string"
+ } ]
+ },
+ "potentialBenefits" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "string"
+ } ]
+ },
+ "eligibleBenefits" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "string"
+ } ]
+ }
+ },
+ "required" : [ ]
+ } ]
+ },
+ "hasEarlyAccess" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "boolean"
+ } ]
+ },
+ "fastShipping" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "additionalProperties" : false,
+ "type" : "object",
+ "properties" : {
+ "actualBenefit" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "string"
+ } ]
+ },
+ "potentialBenefits" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "string"
+ } ]
+ },
+ "eligibleBenefits" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "string"
+ } ]
+ }
+ },
+ "required" : [ ]
+ } ]
+ }
+ },
+ "required" : [ ]
+ } ]
+ },
+ "prop248" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "boolean"
+ } ]
+ },
+ "prop237" : {
+ "type" : "string"
+ },
+ "prop250" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "boolean"
+ } ]
+ },
+ "prop389" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "string"
+ } ]
+ },
+ "prop387" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "boolean"
+ } ]
+ },
+ "prop247" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "boolean"
+ } ]
+ },
+ "prop252" : {
+ "type" : "string"
+ },
+ "prop392" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "additionalItems" : false,
+ "type" : "array",
+ "items" : {
+ "additionalProperties" : false,
+ "type" : "object",
+ "properties" : {
+ "prop391" : {
+ "type" : "string"
+ },
+ "prop390" : {
+ "type" : "string"
+ }
+ },
+ "required" : [ "prop391", "prop390" ]
+ }
+ } ]
+ },
+ "prop240" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "string"
+ } ]
+ },
+ "prop241" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "string"
+ } ]
+ },
+ "prop246" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "additionalProperties" : false,
+ "type" : "object",
+ "properties" : {
+ "prop245" : {
+ "maximum" : 2147483647,
+ "type" : "integer",
+ "minimum" : -2147483648
+ },
+ "prop244" : {
+ "maximum" : 2147483647,
+ "type" : "integer",
+ "minimum" : -2147483648
+ },
+ "prop243" : {
+ "maximum" : 1.7976931348623157E308,
+ "type" : "number",
+ "minimum" : -1.7976931348623157E308
+ },
+ "prop242" : {
+ "maximum" : 2147483647,
+ "type" : "integer",
+ "minimum" : -2147483648
+ }
+ },
+ "required" : [ "prop245", "prop244", "prop243", "prop242" ]
+ } ]
+ },
+ "prop385" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "additionalItems" : false,
+ "type" : "array",
+ "items" : {
+ "additionalProperties" : false,
+ "type" : "object",
+ "properties" : {
+ "prop269" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "maximum" : 2147483647,
+ "type" : "integer",
+ "minimum" : -2147483648
+ } ]
+ },
+ "prop284" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "additionalItems" : false,
+ "type" : "array",
+ "items" : {
+ "additionalProperties" : false,
+ "type" : "object",
+ "properties" : {
+ "prop282" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "boolean"
+ } ]
+ },
+ "prop283" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "boolean"
+ } ]
+ },
+ "prop281" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "additionalProperties" : false,
+ "type" : "object",
+ "properties" : {
+ "prop280" : {
+ "type" : "string"
+ },
+ "prop279" : {
+ "maximum" : 2147483647,
+ "type" : "integer",
+ "minimum" : -2147483648
+ }
+ },
+ "required" : [ "prop280", "prop279" ]
+ } ]
+ },
+ "shownOnProductPage" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "boolean"
+ } ]
+ },
+ "prop278" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "boolean"
+ } ]
+ },
+ "prop277" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "maximum" : 9223372036854775807,
+ "type" : "integer",
+ "minimum" : -9223372036854775808
+ } ]
+ },
+ "prop276" : {
+ "type" : "string"
+ }
+ },
+ "required" : [ "prop276" ]
+ }
+ } ]
+ },
+ "prop267" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "additionalItems" : false,
+ "type" : "array",
+ "items" : {
+ "additionalProperties" : false,
+ "type" : "object",
+ "properties" : {
+ "prop255" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "string"
+ } ]
+ },
+ "type" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "string"
+ } ]
+ }
+ },
+ "required" : [ ]
+ }
+ } ]
+ },
+ "prop271" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "maximum" : 2147483647,
+ "type" : "integer",
+ "minimum" : -2147483648
+ } ]
+ },
+ "prop270" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "maximum" : 2147483647,
+ "type" : "integer",
+ "minimum" : -2147483648
+ } ]
+ },
+ "prop272" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "maximum" : 2147483647,
+ "type" : "integer",
+ "minimum" : -2147483648
+ } ]
+ },
+ "prop274" : {
+ "type" : "string"
+ },
+ "prop285" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "additionalItems" : false,
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ }
+ } ]
+ },
+ "prop268" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "boolean"
+ } ]
+ },
+ "displayedFinalPrice" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "maximum" : 2147483647,
+ "type" : "integer",
+ "minimum" : -2147483648
+ } ]
+ },
+ "prop254" : {
+ "type" : "string"
+ },
+ "prop253" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "boolean"
+ } ]
+ },
+ "showMRP" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "boolean"
+ } ]
+ },
+ "exchangeDetails" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "additionalProperties" : false,
+ "type" : "object",
+ "properties" : {
+ "pincode" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "maximum" : 2147483647,
+ "type" : "integer",
+ "minimum" : -2147483648
+ } ]
+ },
+ "offerId" : {
+ "type" : "string"
+ },
+ "prop278" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "boolean"
+ } ]
+ }
+ },
+ "required" : [ "offerId" ]
+ } ]
+ },
+ "prop275" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "string"
+ } ]
+ },
+ "prop277" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "pattern" : "^(19[7-9][0-9]|2\\d{3})-((((0[13578])|(1[02]))-(([0-2][0-9])|(3[01])))|(((0[469])|(11))-(([0-2][0-9])|(30)))|(02-?[0-2][0-9]))([tT ]([0-1][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])(\\.\\d+)?([zZ]|[+-]\\d{2}(:|)\\d{2}|\\b)|\\b)$",
+ "type" : "string"
+ } ]
+ },
+ "prop273" : {
+ "type" : "string"
+ }
+ },
+ "required" : [ "prop274", "prop254", "prop273" ]
+ }
+ } ]
+ },
+ "prop399" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "string"
+ } ]
+ },
+ "prop393" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "string"
+ } ]
+ },
+ "prop239" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "additionalProperties" : false,
+ "type" : "object",
+ "properties" : {
+ "prop238" : {
+ "type" : "boolean"
+ },
+ "type" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "additionalItems" : false,
+ "type" : "array",
+ "items" : {
+ "type" : "string"
+ }
+ } ]
+ }
+ },
+ "required" : [ "prop238" ]
+ } ]
+ },
+ "latestVersion" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "string"
+ } ]
+ },
+ "exchangeDetails" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "additionalProperties" : false,
+ "type" : "object",
+ "properties" : {
+ "pincode" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "maximum" : 2147483647,
+ "type" : "integer",
+ "minimum" : -2147483648
+ } ]
+ },
+ "offerId" : {
+ "type" : "string"
+ },
+ "prop278" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "boolean"
+ } ]
+ }
+ },
+ "required" : [ "offerId" ]
+ } ]
+ },
+ "prop386" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "type" : "boolean"
+ } ]
+ },
+ "prop251" : {
+ "anyOf" : [ {
+ "type" : "null"
+ }, {
+ "maximum" : 2147483647,
+ "type" : "integer",
+ "minimum" : -2147483648
+ } ]
+ }
+ },
+ "required" : [ "prop237", "prop252" ]
+ },
+ "tests": [
+ {
+ "description": "test on complex schema",
+ "data": {
+ "prop399": "SADSADSADASDSAD",
+ "prop398": {
+ "prop397": "sdsadsadsad",
+ "prop396": "dsadsadsadsad",
+ "prop395": "Fashiosadsadn",
+ "prop389": "sadsadsdsadas"
+ },
+ "prop393": "sassa-6572-4e94-8c45-9b76adfe567b.BELEEVDNNWHPCFG5",
+ "prop392": [
+ {
+ "prop391": "sadsadsdsadas",
+ "prop390": "sadsadsdsadas"
+ }
+ ],
+ "prop389": "BELEEVDNNWHPCFG5",
+ "prop388": false,
+ "prop387": false,
+ "prop386": false,
+ "prop385": [
+ {
+ "prop285": [
+ "nsddasc17ce07",
+ "nbsds05674208",
+ "nadsda1b76202",
+ "nadada7dbb31",
+ "ndadada7a6be08",
+ "nbadadf4e4dd06"
+ ],
+ "prop284": [
+ {
+ "prop283": false,
+ "prop282": true,
+ "prop281": {
+ "prop280": "AASS",
+ "prop279": 65
+ },
+ "prop278": true,
+ "prop277": 1519064999000,
+ "prop276": "REGULAR"
+ }
+ ],
+ "prop275": "AFDA SDADck",
+ "prop274": "LSTBELEEVDNNWHPCFG5XTR99D",
+ "prop273": "current",
+ "prop272": 599,
+ "prop271": 6,
+ "prop270": 177,
+ "prop269": 112,
+ "prop268": true,
+ "prop267": [
+ {
+ "type": "sadsadsdsadas",
+ "prop255": "AAA15c17ce07"
+ },
+ {
+ "type": "sadsadsdsadas",
+ "prop255": "AA05674208"
+ },
+ {
+ "type": "sadsadsdsadas",
+ "prop255": "AAAAA1b76202"
+ },
+ {
+ "type": "sadsadsdsadas",
+ "prop255": "AAAAA67dbb31"
+ },
+ {
+ "type": "sadsadsdsadas",
+ "prop255": "AAAAA7a6be08"
+ },
+ {
+ "type": "sadsadsdsadas",
+ "prop255": "AAAAf4e4dd06"
+ }
+ ],
+ "prop254": "AAAADSDSWQDFDFSD44",
+ "prop253": false
+ },
+ {
+ "prop285": [
+ "nSADSA15c17ce07",
+ "nSDSA105674208",
+ "nSDS0081b76202",
+ "nSDSD67dbb31",
+ "nSAFS1d7a6be08",
+ "nbSFDFSAf4e4dd06"
+ ],
+ "prop284": [
+ {
+ "prop283": false,
+ "prop282": true,
+ "prop281": {
+ "prop280": "WHAT",
+ "prop279": 58
+ },
+ "prop278": true,
+ "prop277": 1519151399000,
+ "prop276": "REGULAR"
+ }
+ ],
+ "prop275": "SDADAck",
+ "prop274": "LSTBELEEVDNNWHPCFG5SOSPHT",
+ "prop273": "current",
+ "prop272": 599,
+ "prop271": 6,
+ "prop270": 198,
+ "prop269": 140,
+ "prop268": true,
+ "prop267": [
+ {
+ "type": "DFSFDSFSDFDSFSDFDFDFSDFD",
+ "prop255": "nb:mp:015c17ce07"
+ },
+ {
+ "type": "DSFDSFSDFSDFSDFSDFSDF",
+ "prop255": "nb:mp:0105674208"
+ },
+ {
+ "type": "SFDSFDSFDSFDSFDFSDF",
+ "prop255": "nb:mp:0081b76202"
+ },
+ {
+ "type": "SFDSFSDFFDSFDFSDFDSFFDSDF",
+ "prop255": "nb:mp:00f67dbb31"
+ },
+ {
+ "type": "DSFSDFDFDSFSDFDSFDFSDFSDF",
+ "prop255": "nb:mp:01d7a6be08"
+ },
+ {
+ "type": "DGDGDSGDSGSGSDGSDGSDGSDGSDGSSD",
+ "prop255": "nb:mp:01f4e4dd06"
+ }
+ ],
+ "prop254": "aaaaca4d3acf4b76",
+ "prop253": false
+ },
+ {
+ "prop285": [
+ "dsdsadsadasdsad",
+ "sadsdsadasdsa8",
+ "nsdadsad0081b76202",
+ "sdddsadadsdd",
+ "nasdsadsa08",
+ "nsaddsadsae4dd06"
+ ],
+ "prop284": [
+ {
+ "prop283": false,
+ "prop282": true,
+ "prop281": {
+ "prop280": "ohh",
+ "prop279": 58
+ },
+ "prop278": true,
+ "prop277": 1519064999000,
+ "prop276": "REGULAR"
+ }
+ ],
+ "prop275": "OUT",
+ "prop274": "LSTBELEEVDNNWHPCFG5NHDRPJ",
+ "prop273": "PAST",
+ "prop272": 599,
+ "prop271": 6,
+ "prop270": 207,
+ "prop269": 149,
+ "prop268": true,
+ "prop267": [
+ {
+ "type": "SAFSAFSAFASFASFDASFSDFASD",
+ "prop255": "EDSFdsad05674208"
+ },
+ {
+ "type": "SFAFSAFSADFSAFSAFSAFSSAFSA",
+ "prop255": "nbdsad05674208"
+ },
+ {
+ "type": "SFDSFSFDSFDSFDSFDSFDSFDSAF",
+ "prop255": "nbasdsa1b76202"
+ },
+ {
+ "type": "SFDSFSFSAFSAFSAFSAFSAFSA",
+ "prop255": "nbsa0f67dbb31"
+ },
+ {
+ "type": "DSFDSFDSFDSFSADFDSAFEWRFEWFDSAFSD",
+ "prop255": "nbdasd7a6be08"
+ },
+ {
+ "type": "DFDSFDSFDSFDSDSFDSFSDFDS",
+ "prop255": "nbssads4dd06"
+ }
+ ],
+ "prop254": "a98dbbb8c75e4fe9",
+ "prop253": false
+ },
+ {
+ "prop285": [
+ "SADSASA015c17ce07",
+ "nASDSA0105674208",
+ "nbSADASD0081b76202",
+ "nSADAS0f67dbb31",
+ "nbSADSAd7a6be08",
+ "nbD45545F1f4e4dd06"
+ ],
+ "prop284": [
+ {
+ "prop283": false,
+ "prop282": true,
+ "prop281": {
+ "prop280": "MYPRICE",
+ "prop279": 58
+ },
+ "prop278": true,
+ "prop277": 1519064999000,
+ "prop276": "IRREGULAR"
+ }
+ ],
+ "prop275": "WHAT?",
+ "prop274": "LSTBELEEVDNNWHPCFG5DU2RER",
+ "prop273": "PAST",
+ "prop272": 599,
+ "prop271": 6,
+ "prop270": 278,
+ "prop269": 220,
+ "prop268": true,
+ "prop267": [
+ {
+ "type": "DDSFDSFSDDSADFSFDS",
+ "prop255": "nb:mp:015c17ce07"
+ },
+ {
+ "type": "DFDSFDSFDSFDSFDS",
+ "prop255": "nb:mp:0105674208"
+ },
+ {
+ "type": "DSFDSFDSFDSFDSFDSFDS",
+ "prop255": "DSADASDA0081b76202"
+ },
+ {
+ "type": "DSFDSFDSFDSFSAFFDFDASFASD",
+ "prop255": "DSADSAD00f67dbb31"
+ },
+ {
+ "type": "ADSFDSFDSFDSFDSFDSFDSFDS",
+ "prop255": "nbSDSAmpSASADSADSA01d7a6be08"
+ },
+ {
+ "type": "DSFDSFDSFDSFDSFDSFDS",
+ "prop255": "SADSADSA"
+ }
+ ],
+ "prop254": "10d23E223E324E32e58d43a4648ea",
+ "prop253": false
+ }
+ ],
+ "prop252": "SDSFSD",
+ "prop251": 4,
+ "prop250": false,
+ "prop249": [],
+ "prop248": false,
+ "prop247": false,
+ "prop246": {
+ "prop245": 6,
+ "prop244": 5,
+ "prop243": 3,
+ "prop242": 35
+ },
+ "prop241": "JUNK",
+ "prop240": "NICEVERYNICE",
+ "prop239": {
+ "prop238": false
+ },
+ "prop237": "NICEVERYNICE"
+ },
+ "valid": true
+ }
+ ]
+ }
+]