From e5c12114d6417b44137171588043679bfd6550b0 Mon Sep 17 00:00:00 2001 From: Everett Hildenbrandt Date: Tue, 29 May 2018 10:45:50 -0600 Subject: test.py, JSONSchema/{vm,vm-filler}-schema: add schemas for vm tests --- JSONSchema/vm-filler-schema.json | 162 +++++++++++++++++++++++++++++++++++++++ JSONSchema/vm-schema.json | 138 +++++++++++++++++++++++++++++++++ 2 files changed, 300 insertions(+) create mode 100644 JSONSchema/vm-filler-schema.json create mode 100644 JSONSchema/vm-schema.json (limited to 'JSONSchema') 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 -- cgit