aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEverett Hildenbrandt <hildenb2@illinois.edu>2018-05-30 00:45:50 +0800
committerEverett Hildenbrandt <hildenb2@illinois.edu>2018-05-31 22:37:30 +0800
commite5c12114d6417b44137171588043679bfd6550b0 (patch)
tree567ab561facf91b6fc95ee810410df8d73f9263b
parent61d5603b69909282188f6e11616ea7d82f6569e0 (diff)
downloaddexon-tests-e5c12114d6417b44137171588043679bfd6550b0.tar.gz
dexon-tests-e5c12114d6417b44137171588043679bfd6550b0.tar.zst
dexon-tests-e5c12114d6417b44137171588043679bfd6550b0.zip
test.py, JSONSchema/{vm,vm-filler}-schema: add schemas for vm tests
-rw-r--r--JSONSchema/vm-filler-schema.json162
-rw-r--r--JSONSchema/vm-schema.json138
-rwxr-xr-xtest.py4
3 files changed, 304 insertions, 0 deletions
diff --git a/JSONSchema/vm-filler-schema.json b/JSONSchema/vm-filler-schema.json
new file mode 100644
index 000000000..fe61ae86a
--- /dev/null
+++ b/JSONSchema/vm-filler-schema.json
@@ -0,0 +1,162 @@
+{
+ "definitions": {
+ "ExpectStateAccount": {
+ "additionalproperties": true,
+ "properties": {
+ "balance": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ },
+ "code": {
+ "$ref": "#/definitions/HexMaybePrefixOrEmpty"
+ },
+ "nonce": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ },
+ "storage": {
+ "additionalProperties": false,
+ "patternProperties": {
+ "^(0x)?[0-9a-f]+": {
+ "$ref": "#/definitions/HexData",
+ "description": "storage key with 0x. data is HexData"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "PreStateAccount": {
+ "additionalproperties": true,
+ "properties": {
+ "balance": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ },
+ "code": {
+ "$ref": "#/definitions/LLLCode"
+ },
+ "nonce": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ },
+ "storage": {
+ "additionalProperties": false,
+ "patternProperties": {
+ "^(0x)?[0-9a-f]+": {
+ "$ref": "#/definitions/HexData",
+ "description": "storage key with 0x. data is HexData"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "balance",
+ "code",
+ "nonce"
+ ],
+ "type": "object"
+ }
+ },
+ "patternProperties": {
+ "^.*$": {
+ "properties": {
+ "env": {
+ "additionalproperties": false,
+ "properties": {
+ "currentCoinbase": {
+ "$ref": "#/definitions/HexMaybePrefix"
+ },
+ "currentDifficulty": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ },
+ "currentGasLimit": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ },
+ "currentNumber": {
+ "$ref": "#/definitions/IntegerOrConfusedHex"
+ },
+ "currentTimestamp": {
+ "$ref": "#/definitions/IntegerOrNumberOrConfusedHex"
+ }
+ },
+ "required": [
+ "currentCoinbase",
+ "currentDifficulty",
+ "currentGasLimit",
+ "currentNumber",
+ "currentTimestamp"
+ ],
+ "type": "object"
+ },
+ "exec": {
+ "additionalproperties": false,
+ "properties": {
+ "address": {
+ "$ref": "#/definitions/AddressMaybePrefixOrEmpty"
+ },
+ "caller": {
+ "$ref": "#/definitions/AddressMaybePrefixOrEmpty"
+ },
+ "code": {
+ "$ref": "#/definitions/LLLCode"
+ },
+ "data": {
+ "$ref": "#/definitions/HexDataOrEmpty"
+ },
+ "gas": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "gasPrice": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "origin": {
+ "$ref": "#/definitions/AddressMaybePrefixOrEmpty"
+ },
+ "value": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ }
+ },
+ "required": [
+ "address",
+ "caller",
+ "data",
+ "gas",
+ "gasPrice",
+ "origin",
+ "value"
+ ]
+ },
+ "expect": {
+ "additionalProperties": false,
+ "patternProperties": {
+ "^[0-9a-f]*": {
+ "$ref": "#/definitions/ExpectStateAccount",
+ "description": "expectstate account address with 0x prefix"
+ }
+ },
+ "type": "object"
+ },
+ "gas": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "logs": {
+ "$ref": "#/definitions/HexDataOrEmpty"
+ },
+ "out": {
+ "$ref": "#/definitions/HexDataOrEmpty"
+ },
+ "pre": {
+ "additionalProperties": false,
+ "patternProperties": {
+ "^(0x)?[0-9a-f]*": {
+ "$ref": "#/definitions/PreStateAccount",
+ "description": "prestate account address with 0x prefix"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+}
diff --git a/JSONSchema/vm-schema.json b/JSONSchema/vm-schema.json
new file mode 100644
index 000000000..7a81d64c0
--- /dev/null
+++ b/JSONSchema/vm-schema.json
@@ -0,0 +1,138 @@
+{
+ "definitions": {
+ "PreStateAccount": {
+ "additionalproperties": true,
+ "properties": {
+ "balance": {
+ "$ref": "#/definitions/ConfusedHexType"
+ },
+ "code": {
+ "$ref": "#/definitions/HexMaybePrefixOrEmpty"
+ },
+ "nonce": {
+ "$ref": "#/definitions/ConfusedHexType"
+ },
+ "storage": {
+ "additionalProperties": false,
+ "patternProperties": {
+ "^0x[0-9a-f]+": {
+ "$ref": "#/definitions/HexData",
+ "description": "storage key with 0x. data is HexData"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "balance",
+ "code",
+ "nonce"
+ ],
+ "type": "object"
+ }
+ },
+ "patternProperties": {
+ "^.*$": {
+ "properties": {
+ "env": {
+ "additionalproperties": false,
+ "properties": {
+ "currentCoinbase": {
+ "$ref": "#/definitions/HexData"
+ },
+ "currentDifficulty": {
+ "$ref": "#/definitions/ConfusedHexType"
+ },
+ "currentGasLimit": {
+ "$ref": "#/definitions/ConfusedHexType"
+ },
+ "currentNumber": {
+ "$ref": "#/definitions/ConfusedHexType"
+ },
+ "currentTimestamp": {
+ "$ref": "#/definitions/ConfusedHexType"
+ }
+ },
+ "required": [
+ "currentCoinbase",
+ "currentDifficulty",
+ "currentGasLimit",
+ "currentNumber",
+ "currentTimestamp"
+ ],
+ "type": "object"
+ },
+ "exec": {
+ "additionalproperties": false,
+ "properties": {
+ "address": {
+ "$ref": "#/definitions/AddressMaybePrefixOrEmpty"
+ },
+ "caller": {
+ "$ref": "#/definitions/AddressMaybePrefixOrEmpty"
+ },
+ "code": {
+ "$ref": "#/definitions/HexMaybePrefixOrEmpty"
+ },
+ "data": {
+ "$ref": "#/definitions/HexDataOrEmpty"
+ },
+ "gas": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "gasPrice": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "origin": {
+ "$ref": "#/definitions/AddressMaybePrefixOrEmpty"
+ },
+ "value": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ }
+ },
+ "required": [
+ "address",
+ "caller",
+ "code",
+ "data",
+ "gas",
+ "gasPrice",
+ "origin",
+ "value"
+ ]
+ },
+ "gas": {
+ "$ref": "#/definitions/IntegerOrEmptyOrConfusedHex"
+ },
+ "logs": {
+ "$ref": "#/definitions/HexDataOrEmpty"
+ },
+ "out": {
+ "$ref": "#/definitions/HexDataOrEmpty"
+ },
+ "post": {
+ "additionalProperties": false,
+ "patternProperties": {
+ "^0x[0-9a-f]*": {
+ "$ref": "#/definitions/PreStateAccount",
+ "description": "poststate account address with 0x prefix"
+ }
+ },
+ "type": "object"
+ },
+ "pre": {
+ "additionalProperties": false,
+ "patternProperties": {
+ "^0x[0-9a-f]*": {
+ "$ref": "#/definitions/PreStateAccount",
+ "description": "prestate account address with 0x prefix"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+} \ No newline at end of file
diff --git a/test.py b/test.py
index 146537a5a..79fab1ec0 100755
--- a/test.py
+++ b/test.py
@@ -81,8 +81,12 @@ def validateSchema(jsonFile, schemaFile):
jsonschema.validate(jsonInput, schema)
def validateTestFile(jsonFile):
+ if jsonFile.startswith("./src/VMTestsFiller/"):
+ validateSchema(jsonFile, "JSONSchema/vm-filler-schema.json")
elif jsonFile.startswith("./src/GeneralStateTestsFiller/"):
validateSchema(jsonFile, "JSONSchema/st-filler-schema.json")
+ elif jsonFile.startswith("./VMTests/"):
+ validateSchema(jsonFile, "JSONSchema/vm-schema.json")
elif jsonFile.startswith("./GeneralStateTests/"):
validateSchema(jsonFile, "JSONSchema/st-schema.json")
elif jsonFile.startswith("./BlockchainTests/"):