diff --git a/.gencode_hash.txt b/.gencode_hash.txt index f8c44acc75..9562f8a9f6 100644 --- a/.gencode_hash.txt +++ b/.gencode_hash.txt @@ -3,8 +3,8 @@ fb876b8f7bfdccf156d751efddf2660a7a7ab5585e89be0f82c59f7a61e68d4c gencode/docs/config.html 22bfb3fd7c0e73dac4cbd830aa7983714917ec6da813f6bf5768ce3aa9786fb2 gencode/docs/config_mapping.html 1ce30b7c554a0be09a9124707cb5602dce78753304cca17c06268ecb3337da51 gencode/docs/configuration_endpoint.html -c2ad0293315ef1e8fd6a0326752b4ce4d7b0d54ae07cd1ebd07be351ac22f11f gencode/docs/configuration_execution.html -6a097f1f87ab7b9a82e4d3aa6f6cedf69499a95742863a7f53bb5fdf53fd6ff0 gencode/docs/configuration_pod.html +136eeb98d4db5c2427498b0483e0fb8e73bc3dcb962f0ab942f7b98115b1b71f gencode/docs/configuration_execution.html +f4937abf377ef27e18e2dba77589fa08f2d955cf85a905f360ddaf4ad0bea0c3 gencode/docs/configuration_pod.html 4d327975ae4d48a5dd920f298931fc5056a7239d677e61a9f4d129068316dd0a gencode/docs/configuration_pubber.html f24d15e549f1b143b50d6011f2f7fd03286e1cd128a3e25591195b25f8efc472 gencode/docs/data_template.html 45d39c61ce39afc0d14f3dc99a93947587d63999cd373cb44b63ce8f576c6e7e gencode/docs/events.html @@ -81,7 +81,7 @@ e256275d840d94c6e61316e756b0dad6d823db8900e35e785f6ef5001fdb5fc9 gencode/java/u a773f8271a99f96a3fb09ceb79bc4022a8b7ab941f5e6246e073703d33022b99 gencode/java/udmi/schema/GatewayConfig.java 0f176bbd9748ac357ebcb7cf9ba66fca4f4768ce40a2a1436bb6d14093ee8101 gencode/java/udmi/schema/GatewayModel.java 1f7f6809e143e9e3e13e6fa73776a893b62b0c05f8802087b1e276dc0ab83e19 gencode/java/udmi/schema/GatewayState.java -d14fdea87e337eb8bbe44f6b1a435dd0bacaf71cf6384dfeaf28a0a121e07605 gencode/java/udmi/schema/IotAccess.java +6ffcc0820c02c9f83787f3102389380b5d4da20c4d813219964151bdfebf335e gencode/java/udmi/schema/IotAccess.java d0858bd7ba306176f4e3c19eeb69ef2467afec0832b6917b72d3ab87469e4974 gencode/java/udmi/schema/Jwt.java 5a0cc53317592a868f7f23a67a7493bd571054bb25d9e28de51000ad6473dfeb gencode/java/udmi/schema/Level.java 6b4c29a682d0697d5420efb9e7788ec7358d94435da288938007205b8669e180 gencode/java/udmi/schema/LocalnetConfig.java diff --git a/bin/pubber b/bin/pubber index aa260bb5ba..1bda0b6854 100755 --- a/bin/pubber +++ b/bin/pubber @@ -13,7 +13,7 @@ function cleanup { } trap cleanup EXIT -[[ $# == 0 ]] && usage SITE_{PATH/FILE} [PROJECT_ID] [DEVICE_ID] [SERIAL_NO] [options] ... +[[ $# == 0 ]] && usage SITE_{PATH/FILE} [PROJECT_SPEC] [DEVICE_ID] [SERIAL_NO] [options] ... config_file=$(realpath $1) serial_no=NA diff --git a/bin/test_combos b/bin/test_combos index fc078d8359..013482cbac 100755 --- a/bin/test_combos +++ b/bin/test_combos @@ -4,8 +4,11 @@ # tests=tests/combos/*.json +echo Testing $tests validator/bin/build +jarfile=$(realpath validator/build/libs/validator-1.0-SNAPSHOT-all.jar) +javarun="java -cp $jarfile com.google.daq.mqtt.validator.SchemaTester" failures= for test in $tests; do @@ -14,7 +17,10 @@ for test in $tests; do site_model=$(jq -r .site_model $test) validator_config=$(jq -r .validator $test) if [[ $validator_config != null ]]; then - validator/bin/validate -- schema trace $traces $site_model + cmd="$javarun -p -- -s $site_model -r $traces --" + echo $cmd + $cmd + check=$(echo $validator_config | jq -r .check) echo $check code=0 diff --git a/bin/test_schema b/bin/test_schema index b1282a95e4..cd88682d70 100755 --- a/bin/test_schema +++ b/bin/test_schema @@ -46,6 +46,7 @@ if [ "$build" == y ]; then fi jarfile=$(realpath validator/build/libs/validator-1.0-SNAPSHOT-all.jar) +javarun="java -cp $jarfile com.google.daq.mqtt.validator.SchemaTester" if [[ -z $subsets ]]; then subsets=$(cd $testdir; ls -d *) @@ -68,7 +69,7 @@ for subset in $subsets; do reldir=$(realpath --relative-to $schemadir $testdir) reltest=$reldir:$subset fi - (cd $schemadir; java -jar -Dnashorn.args=--no-deprecation-warning $jarfile -a $schemaname $upgrade -f $reltest) || true + (cd $schemadir; $javarun -a $schemaname $upgrade -f $reltest) || true for testfile in $testfiles; do outfile=${testfile%.json}.out diff --git a/bin/test_trace b/bin/test_trace index ae0a6ae3a0..a0ba0bc302 100755 --- a/bin/test_trace +++ b/bin/test_trace @@ -19,6 +19,9 @@ function redact() { -e 's/\\n.*\.java:[0-9]+\)/\\tREDACTED\\n/g' } +jarfile=$(realpath validator/build/libs/validator-1.0-SNAPSHOT-all.jar) +javarun="java -cp $jarfile com.google.daq.mqtt.validator.SchemaTester" +validator/bin/build trace_in=tests/traces/${trace_name} trace_out=$trace_in/expected/ @@ -33,7 +36,9 @@ export UDMI_TOOLS=test_trace # Clean things out, including some potentially corrupt state. rm -rf $site_out $site_model/devices/XXX-1 -validator/bin/validate -- schema trace $trace_in $site_model +cmd="$javarun -p -- -s $site_model -r $trace_in --" +echo $cmd +$cmd echo Redacting output files... for file in `find $site_out -type f`; do redact; done diff --git a/bin/validator b/bin/validator deleted file mode 100755 index 29bf78bd63..0000000000 --- a/bin/validator +++ /dev/null @@ -1,81 +0,0 @@ -#!/bin/bash -e - -UDMI_ROOT=$(realpath $(dirname $0)/..) -source $UDMI_ROOT/etc/shell_common.sh - -OUT_DIR=$UDMI_ROOT/out -mkdir -p $OUT_DIR -echo $(date --utc +%Y%m%d-%H%M%S) $0 $@ >> $OUT_DIR/cmd_history.log - -[[ $# == 0 ]] && usage 'SITE_{PATH/FILE}' [PROJECT_ID] [SUBSCRIPTION_ID] - -site_path=$(realpath $1) -shift - -project_id= -if [[ -n ${1:-} ]]; then - project_id=$1 - shift -fi - -subscription=null -if [[ -n ${1:-} && ! $1 =~ ^- ]]; then - subscription=\"$1\" - shift -fi - -quoted_namespace=null -quoted_bridge=null -iot_provider=null -if [[ $project_id =~ ^// ]]; then - no_prefix=${project_id#//} - iot_provider=\"${no_prefix%%/*}\" - no_provider=${no_prefix#*/} - project_id=${no_provider%/*} - udmi_namespace=${no_provider#$project_id} - [[ -n $udmi_namespace ]] && quoted_namespace=\"${udmi_namespace#/}\" -elif [[ $project_id =~ @ ]]; then - iot_provider=\"jwt\" - quoted_bridge=\"${project_id#*@}\" - project_id=${project_id%@*} -fi - -if [[ -n $project_id ]]; then - quoted_id=\"${project_id##*/}\" -else - quoted_id=null -fi - -if [[ -f $site_path ]]; then - site_file=$site_path - [[ -z $project_id ]] || fail project id specificed with config file - rm -f /tmp/validator_config.json -elif [[ ! -d $site_path ]]; then - echo $site_path not found. - false -elif [[ ! -f $site_path/cloud_iot_config.json ]]; then - echo $site_path/cloud_iot_config.json not found. - false -elif [[ -n $project_id ]]; then - site_file=/tmp/validator_config.json - echo Writing config to $site_file - cat < $site_file -{ - "iot_provider": $iot_provider, - "project_id": $quoted_id, - "bridge_host": $quoted_bridge, - "udmi_namespace": $quoted_namespace, - "site_model": "$site_path", - "feed_name": ${subscription} -} -EOF -else - fail unknown configuration options -fi - -echo Using site file $site_file: -cat $site_file - -echo Running tools version $udmi_version - -$UDMI_ROOT/validator/bin/validate $site_file $* 2>&1 | tee $OUT_DIR/validator.log diff --git a/bin/validator b/bin/validator new file mode 120000 index 0000000000..ae1b6f072c --- /dev/null +++ b/bin/validator @@ -0,0 +1 @@ +toolrun \ No newline at end of file diff --git a/common/src/main/java/com/google/udmi/util/Common.java b/common/src/main/java/com/google/udmi/util/Common.java index 865f1bb8f8..4099fa5a70 100644 --- a/common/src/main/java/com/google/udmi/util/Common.java +++ b/common/src/main/java/com/google/udmi/util/Common.java @@ -51,16 +51,16 @@ public abstract class Common { public static final char DETAIL_SEPARATOR_CHAR = ';'; public static final String DETAIL_SEPARATOR = DETAIL_SEPARATOR_CHAR + " "; public static final Joiner DETAIL_JOINER = Joiner.on(DETAIL_SEPARATOR); - public static final String CONFIG_CATEGORY = "config"; - public static final String COMMANDS_CATEGORY = "commands"; public static final String CATEGORY_PROPERTY_KEY = "category"; public static final Pattern DEVICE_ID_ALLOWABLE = Pattern.compile("^[-_a-zA-Z0-9]+$"); public static final Pattern POINT_NAME_ALLOWABLE = DEVICE_ID_ALLOWABLE; public static final int SEC_TO_MS = 1000; public static final String SOURCE_SEPARATOR = "+"; + public static final String SOURCE_SEPARATOR_REGEX = "\\" + SOURCE_SEPARATOR; private static final String PREFIX_SEPARATOR = "~"; private static final String UDMI_VERSION_ENV = "UDMI_TOOLS"; + public static final int EXIT_CODE_ERROR = 1; /** * Remove the next item from the list in an exception-safe way. diff --git a/etc/validator.out b/etc/validator.out index c511f7348d..e53e227d31 100644 --- a/etc/validator.out +++ b/etc/validator.out @@ -60,7 +60,7 @@ sites/udmi_site_model/out/devices/AHU-1/events_pointset.out "sub_type" : "events", "status" : { "message" : "Multiple validation errors", - "detail" : "Timestamp jitter REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold; While converting to json node: 1 schema violations found", + "detail" : "Timestamp skew REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold; While converting to json node: 1 schema violations found", "category" : "validation.device.multiple", "timestamp" : "REDACTED_TIMESTAMP", "level" : 500 @@ -70,8 +70,8 @@ sites/udmi_site_model/out/devices/AHU-1/events_pointset.out "extra" : [ ] }, "errors" : [ { - "message" : "Timestamp jitter REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold", - "detail" : "events_pointset: Timestamp jitter REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold REDACTED_ERROR", + "message" : "Timestamp skew REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold", + "detail" : "events_pointset: Timestamp skew REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold REDACTED_ERROR", "category" : "validation.device.schema", "timestamp" : "REDACTED_TIMESTAMP", "level" : 500 @@ -92,15 +92,15 @@ sites/udmi_site_model/out/devices/AHU-1/events_system.out "sub_folder" : "system", "sub_type" : "events", "status" : { - "message" : "Timestamp jitter REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold", - "detail" : "events_system: Timestamp jitter REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold REDACTED_ERROR", + "message" : "Timestamp skew REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold", + "detail" : "events_system: Timestamp skew REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold REDACTED_ERROR", "category" : "validation.device.schema", "timestamp" : "REDACTED_TIMESTAMP", "level" : 500 }, "errors" : [ { - "message" : "Timestamp jitter REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold", - "detail" : "events_system: Timestamp jitter REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold REDACTED_ERROR", + "message" : "Timestamp skew REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold", + "detail" : "events_system: Timestamp skew REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold REDACTED_ERROR", "category" : "validation.device.schema", "timestamp" : "REDACTED_TIMESTAMP", "level" : 500 @@ -115,15 +115,15 @@ sites/udmi_site_model/out/devices/AHU-1/state_localnet.out "sub_folder" : "localnet", "sub_type" : "state", "status" : { - "message" : "Timestamp jitter REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold", - "detail" : "state_localnet: Timestamp jitter REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold REDACTED_ERROR", + "message" : "Timestamp skew REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold", + "detail" : "state_localnet: Timestamp skew REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold REDACTED_ERROR", "category" : "validation.device.schema", "timestamp" : "REDACTED_TIMESTAMP", "level" : 500 }, "errors" : [ { - "message" : "Timestamp jitter REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold", - "detail" : "state_localnet: Timestamp jitter REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold REDACTED_ERROR", + "message" : "Timestamp skew REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold", + "detail" : "state_localnet: Timestamp skew REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold REDACTED_ERROR", "category" : "validation.device.schema", "timestamp" : "REDACTED_TIMESTAMP", "level" : 500 @@ -139,14 +139,14 @@ sites/udmi_site_model/out/devices/AHU-1/state.out "sub_type" : "state", "status" : { "message" : "Multiple validation errors", - "detail" : "Timestamp jitter REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold; While converting to json node: 1 schema violations found", + "detail" : "Timestamp skew REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold; While converting to json node: 1 schema violations found", "category" : "validation.device.multiple", "timestamp" : "REDACTED_TIMESTAMP", "level" : 500 }, "errors" : [ { - "message" : "Timestamp jitter REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold", - "detail" : "state_update: Timestamp jitter REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold REDACTED_ERROR", + "message" : "Timestamp skew REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold", + "detail" : "state_update: Timestamp skew REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold REDACTED_ERROR", "category" : "validation.device.schema", "timestamp" : "REDACTED_TIMESTAMP", "level" : 500 @@ -167,8 +167,8 @@ sites/udmi_site_model/out/devices/AHU-1/state_pointset.out "sub_folder" : "pointset", "sub_type" : "state", "status" : { - "message" : "Timestamp jitter REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold", - "detail" : "state_pointset: Timestamp jitter REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold REDACTED_ERROR", + "message" : "Timestamp skew REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold", + "detail" : "state_pointset: Timestamp skew REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold REDACTED_ERROR", "category" : "validation.device.schema", "timestamp" : "REDACTED_TIMESTAMP", "level" : 500 @@ -178,8 +178,8 @@ sites/udmi_site_model/out/devices/AHU-1/state_pointset.out "extra" : [ ] }, "errors" : [ { - "message" : "Timestamp jitter REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold", - "detail" : "state_pointset: Timestamp jitter REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold REDACTED_ERROR", + "message" : "Timestamp skew REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold", + "detail" : "state_pointset: Timestamp skew REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold REDACTED_ERROR", "category" : "validation.device.schema", "timestamp" : "REDACTED_TIMESTAMP", "level" : 500 @@ -194,15 +194,15 @@ sites/udmi_site_model/out/devices/AHU-1/state_system.out "sub_folder" : "system", "sub_type" : "state", "status" : { - "message" : "Timestamp jitter REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold", - "detail" : "state_system: Timestamp jitter REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold REDACTED_ERROR", + "message" : "Timestamp skew REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold", + "detail" : "state_system: Timestamp skew REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold REDACTED_ERROR", "category" : "validation.device.schema", "timestamp" : "REDACTED_TIMESTAMP", "level" : 500 }, "errors" : [ { - "message" : "Timestamp jitter REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold", - "detail" : "state_system: Timestamp jitter REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold REDACTED_ERROR", + "message" : "Timestamp skew REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold", + "detail" : "state_system: Timestamp skew REDACTED_DURATION (REDACTED_TIMESTAMP to REDACTED_TIMESTAMP) exceeds REDACTED_DURATION threshold REDACTED_ERROR", "category" : "validation.device.schema", "timestamp" : "REDACTED_TIMESTAMP", "level" : 500 @@ -376,13 +376,19 @@ sites/udmi_site_model/out/devices/GAT-123/events_blobset.out "sub_folder" : "blobset", "sub_type" : "events", "status" : { - "message" : "Raw string message for GAT-123 events_blobset", - "detail" : "events_blobset: Raw string message for GAT-123 events_blobset REDACTED_ERROR", - "category" : "validation.device.schema", + "message" : "Multiple validation errors", + "detail" : "Unknown schema subFolder 'events_blobset' for GAT-123; Raw string message for GAT-123 events_blobset", + "category" : "validation.device.multiple", "timestamp" : "REDACTED_TIMESTAMP", "level" : 500 }, "errors" : [ { + "message" : "Unknown schema subFolder 'events_blobset' for GAT-123", + "detail" : "events_blobset: Unknown schema subFolder 'events_blobset' for GAT-123 REDACTED_ERROR", + "category" : "validation.device.schema", + "timestamp" : "REDACTED_TIMESTAMP", + "level" : 500 + }, { "message" : "Raw string message for GAT-123 events_blobset", "detail" : "events_blobset: Raw string message for GAT-123 events_blobset REDACTED_ERROR", "category" : "validation.device.schema", diff --git a/gencode/docs/configuration_execution.html b/gencode/docs/configuration_execution.html index e43f3d5ab6..8ea23491e7 100644 --- a/gencode/docs/configuration_execution.html +++ b/gencode/docs/configuration_execution.html @@ -451,7 +451,7 @@

Must be one of:

-
  • "local"
  • "dynamic"
  • "implicit"
  • "pubsub"
  • "etcd"
  • "mqtt"
  • "jwt"
  • "gcp_native"
  • "gbos"
  • "clearblade_native"
  • "clearblade"
+
  • "local"
  • "dynamic"
  • "implicit"
  • "pubsub"
  • "pref"
  • "mqtt"
  • "gbos"
  • "etcd"
  • "jwt"
  • "clearblade"
diff --git a/gencode/docs/configuration_pod.html b/gencode/docs/configuration_pod.html index c738eb1518..baa8f408df 100644 --- a/gencode/docs/configuration_pod.html +++ b/gencode/docs/configuration_pod.html @@ -6968,7 +6968,7 @@

Must be one of:

-
  • "local"
  • "dynamic"
  • "implicit"
  • "pubsub"
  • "etcd"
  • "mqtt"
  • "jwt"
  • "gcp_native"
  • "gbos"
  • "clearblade_native"
  • "clearblade"
+
  • "local"
  • "dynamic"
  • "implicit"
  • "pubsub"
  • "pref"
  • "mqtt"
  • "gbos"
  • "etcd"
  • "jwt"
  • "clearblade"
@@ -7288,7 +7288,7 @@

Must be one of:

-
  • "local"
  • "dynamic"
  • "implicit"
  • "pubsub"
  • "etcd"
  • "mqtt"
  • "jwt"
  • "gcp_native"
  • "gbos"
  • "clearblade_native"
  • "clearblade"
+
  • "local"
  • "dynamic"
  • "implicit"
  • "pubsub"
  • "pref"
  • "mqtt"
  • "gbos"
  • "etcd"
  • "jwt"
  • "clearblade"
diff --git a/gencode/java/udmi/schema/IotAccess.java b/gencode/java/udmi/schema/IotAccess.java index 0749530044..a307741ddb 100644 --- a/gencode/java/udmi/schema/IotAccess.java +++ b/gencode/java/udmi/schema/IotAccess.java @@ -79,12 +79,11 @@ public enum IotProvider { DYNAMIC("dynamic"), IMPLICIT("implicit"), PUBSUB("pubsub"), - ETCD("etcd"), + PREF("pref"), MQTT("mqtt"), - JWT("jwt"), - GCP_NATIVE("gcp_native"), GBOS("gbos"), - CLEARBLADE_NATIVE("clearblade_native"), + ETCD("etcd"), + JWT("jwt"), CLEARBLADE("clearblade"); private final String value; private final static Map CONSTANTS = new HashMap(); diff --git a/schema/common.json b/schema/common.json index 47e886226c..a85cbea370 100644 --- a/schema/common.json +++ b/schema/common.json @@ -39,12 +39,11 @@ "dynamic", "implicit", "pubsub", - "etcd", + "pref", "mqtt", - "jwt", - "gcp_native", "gbos", - "clearblade_native", + "etcd", + "jwt", "clearblade" ] }, diff --git a/tests/traces/lengthy/devices/AHU-1/001_events_pointset.json b/tests/traces/lengthy/devices/AHU-1/001_events_pointset.json new file mode 100644 index 0000000000..bcde2868f8 --- /dev/null +++ b/tests/traces/lengthy/devices/AHU-1/001_events_pointset.json @@ -0,0 +1,15 @@ +{ + "points" : { + "filter_alarm_pressure_status" : { + "present_value" : true + }, + "filter_differential_pressure_setpoint" : { + "present_value" : 98 + }, + "filter_differential_pressure_sensor" : { + "present_value" : 11 + } + }, + "timestamp" : "2022-07-17T05:04:26Z", + "version" : "1.5.1" +} diff --git a/tests/traces/lengthy/devices/AHU-1/002_events_pointset.json b/tests/traces/lengthy/devices/AHU-1/002_events_pointset.json new file mode 100644 index 0000000000..86561c0aca --- /dev/null +++ b/tests/traces/lengthy/devices/AHU-1/002_events_pointset.json @@ -0,0 +1,15 @@ +{ + "points" : { + "filter_alarm_pressure_status" : { + "present_value" : true + }, + "filter_differential_pressure_setpoint" : { + "present_value" : 98 + }, + "filter_differential_pressure_sensor" : { + "present_value" : 11 + } + }, + "timestamp" : "2022-07-17T05:34:36+0000", + "version" : "1.5.1" +} diff --git a/tests/traces/lengthy/devices/AHU-1/003_events_pointset.json b/tests/traces/lengthy/devices/AHU-1/003_events_pointset.json new file mode 100644 index 0000000000..0dadb70086 --- /dev/null +++ b/tests/traces/lengthy/devices/AHU-1/003_events_pointset.json @@ -0,0 +1,15 @@ +{ + "points" : { + "filter_alarm_pressure_status" : { + "present_value" : true + }, + "filter_differential_pressure_setpoint" : { + "present_value" : 98 + }, + "filter_differential_pressure_sensor" : { + "present_value" : 11 + } + }, + "timestamp" : "2022-07-17T06:07:36Z", // Over threshold from _initial_ event + "version" : "1.5.1" +} diff --git a/tests/traces/lengthy/expected/devices/AHU-1/events_pointset.attr b/tests/traces/lengthy/expected/devices/AHU-1/events_pointset.attr new file mode 100644 index 0000000000..a6ffd57222 --- /dev/null +++ b/tests/traces/lengthy/expected/devices/AHU-1/events_pointset.attr @@ -0,0 +1,10 @@ +{ + "deviceNumId" : "00000062256946", + "publishTime" : "1999-10-20T01:02:03Z", + "subFolder" : "pointset", + "deviceRegistryId" : "ZZ-TRI-FECTA", + "subType" : "events", + "msgSource" : "003_events_pointset.json", + "deviceId" : "AHU-1", + "projectId" : "playback-project" +} \ No newline at end of file diff --git a/tests/traces/lengthy/expected/devices/AHU-1/events_pointset.json b/tests/traces/lengthy/expected/devices/AHU-1/events_pointset.json new file mode 100644 index 0000000000..5615cf9118 --- /dev/null +++ b/tests/traces/lengthy/expected/devices/AHU-1/events_pointset.json @@ -0,0 +1,15 @@ +{ + "points" : { + "filter_alarm_pressure_status" : { + "present_value" : true + }, + "filter_differential_pressure_setpoint" : { + "present_value" : 98 + }, + "filter_differential_pressure_sensor" : { + "present_value" : 11 + } + }, + "timestamp" : "1999-10-20T01:02:03Z", + "version" : "1.5.1" +} \ No newline at end of file diff --git a/tests/traces/lengthy/expected/devices/AHU-1/events_pointset.out b/tests/traces/lengthy/expected/devices/AHU-1/events_pointset.out new file mode 100644 index 0000000000..dc3cc3bfd9 --- /dev/null +++ b/tests/traces/lengthy/expected/devices/AHU-1/events_pointset.out @@ -0,0 +1,17 @@ +{ + "timestamp" : "1999-10-20T01:02:03Z", + "version" : "1.5.1", + "sub_folder" : "pointset", + "sub_type" : "events", + "status" : { + "message" : "Successful validation", + "category" : "validation.device.receive", + "timestamp" : "1999-10-20T01:02:03Z", + "level" : 200 + }, + "pointset" : { + "missing" : [ ], + "extra" : [ ] + }, + "errors" : [ ] +} diff --git a/tests/traces/lengthy/expected/devices/AHU-1/events_system.attr b/tests/traces/lengthy/expected/devices/AHU-1/events_system.attr new file mode 100644 index 0000000000..f21e8d3520 --- /dev/null +++ b/tests/traces/lengthy/expected/devices/AHU-1/events_system.attr @@ -0,0 +1,10 @@ +{ + "deviceNumId" : "00000062256946", + "publishTime" : "2022-07-19T05:04:36+0000", + "subFolder" : "system", + "deviceRegistryId" : "ZZ-TRI-FECTA", + "subType" : "events", + "msgSource" : "002_events_system.json", + "deviceId" : "AHU-1", + "projectId" : "playback-project" +} \ No newline at end of file diff --git a/tests/traces/lengthy/expected/devices/AHU-1/events_system.json b/tests/traces/lengthy/expected/devices/AHU-1/events_system.json new file mode 100644 index 0000000000..703d8551ce --- /dev/null +++ b/tests/traces/lengthy/expected/devices/AHU-1/events_system.json @@ -0,0 +1,13 @@ +{ + "logentries" : [ { + "message" : "1999-10-20T01:02:03Z sending test message #70", + "category" : "device.testing", + "timestamp" : "1999-10-20T01:02:03Z", + "level" : 200 + } ], + "metrics" : { + "mem_total_mb" : 25164.88 + }, + "timestamp" : "2022-07-19T05:04:36+0000", + "version" : "1.5.1" +} \ No newline at end of file diff --git a/tests/traces/lengthy/expected/devices/AHU-1/events_system.out b/tests/traces/lengthy/expected/devices/AHU-1/events_system.out new file mode 100644 index 0000000000..a3237dc0c7 --- /dev/null +++ b/tests/traces/lengthy/expected/devices/AHU-1/events_system.out @@ -0,0 +1,13 @@ +{ + "timestamp" : "1999-10-20T01:02:03Z", + "version" : "1.5.1", + "sub_folder" : "system", + "sub_type" : "events", + "status" : { + "message" : "Successful validation", + "category" : "validation.device.receive", + "timestamp" : "1999-10-20T01:02:03Z", + "level" : 200 + }, + "errors" : [ ] +} diff --git a/tests/traces/lengthy/expected/validation_report.json b/tests/traces/lengthy/expected/validation_report.json new file mode 100644 index 0000000000..4f9f06b9d6 --- /dev/null +++ b/tests/traces/lengthy/expected/validation_report.json @@ -0,0 +1,56 @@ +{ + "timestamp" : "1999-10-20T01:02:03Z", + "version" : "1.5.1", + "cloud_version" : { + "deployed_by" : "Default implementation for class com.google.daq.mqtt.validator.MessageReadingClient" + }, + REDACTED, + "start_time" : "1999-10-20T01:02:03Z", + "summary" : { + "correct_devices" : [ "AHU-1" ], + "extra_devices" : [ ], + "missing_devices" : [ ], + "error_devices" : [ "AHU-22", "GAT-123", "SNS-4" ] + }, + "devices" : { + "AHU-1" : { + "last_seen" : "1999-10-20T01:02:03Z", + "status" : { + "message" : "Successful validation", + "category" : "validation.device.receive", + "timestamp" : "1999-10-20T01:02:03Z", + "level" : 200 + } + }, + "AHU-22" : { + "last_seen" : "1999-10-20T01:02:03Z", + "status" : { + "message" : "While converting to json node: 2 schema violations found", + "detail" : "events_pointset: While converting to json node: 2 schema violations found @Validator.validateMessage(REDACTED); 2 schema violations found; object instance has properties which are not allowed by the schema: [\"yesvalue\"]; object has missing required properties ([\"version\"])", + "category" : "validation.device.schema", + "timestamp" : "1999-10-20T01:02:03Z", + "level" : 500 + } + }, + "GAT-123" : { + "last_seen" : "1999-10-20T01:02:03Z", + "status" : { + "message" : "missing pointset subblock", + "detail" : "state_update: missing pointset subblock", + "category" : "validation.device.schema", + "timestamp" : "1999-10-20T01:02:03Z", + "level" : 500 + } + }, + "SNS-4" : { + "last_seen" : "1999-10-20T01:02:03Z", + "status" : { + "message" : "Multiple validation errors", + "detail" : "While converting to json node: 1 schema violations found; Device has extra points: rocket_count, triangulating_axis_y; Unexpected character ('{' (code 123)): was expecting double-quote to start field name\n at [Source: (File), line: 1, column: 3]; While converting to json node: 1 schema violations found", + "category" : "validation.device.multiple", + "timestamp" : "1999-10-20T01:02:03Z", + "level" : 500 + } + } + } +} diff --git a/udmis/src/main/java/com/google/bos/udmi/service/access/PubSubIotAccessProvider.java b/udmis/src/main/java/com/google/bos/udmi/service/access/PubSubIotAccessProvider.java index 04bc3454ef..46fcfebe63 100644 --- a/udmis/src/main/java/com/google/bos/udmi/service/access/PubSubIotAccessProvider.java +++ b/udmis/src/main/java/com/google/bos/udmi/service/access/PubSubIotAccessProvider.java @@ -4,8 +4,6 @@ import static com.google.bos.udmi.service.messaging.impl.PubSubPipe.SOURCE_KEY; import static com.google.bos.udmi.service.messaging.impl.PubSubPipe.getTransportChannelProvider; import static com.google.udmi.util.Common.CATEGORY_PROPERTY_KEY; -import static com.google.udmi.util.Common.COMMANDS_CATEGORY; -import static com.google.udmi.util.Common.CONFIG_CATEGORY; import static com.google.udmi.util.Common.DEVICE_ID_KEY; import static com.google.udmi.util.Common.REGISTRY_ID_PROPERTY_KEY; import static com.google.udmi.util.Common.SOURCE_SEPARATOR; @@ -34,6 +32,7 @@ import udmi.schema.CloudModel; import udmi.schema.Envelope; import udmi.schema.Envelope.SubFolder; +import udmi.schema.Envelope.SubType; import udmi.schema.IotAccess; /** @@ -41,6 +40,8 @@ */ public class PubSubIotAccessProvider extends IotAccessBase { + private static final String COMMAND_SUBTYPE = SubType.COMMANDS.value(); + private static final String CONFIG_SUBTYPE = SubType.CONFIG.value(); private final String projectId; private final String topic; private final Publisher publisher; @@ -76,12 +77,12 @@ public boolean isEnabled() { @Override public void sendCommandBase(Envelope envelope, SubFolder folder, String message) { - publish(envelope, COMMANDS_CATEGORY, folder, message); + publish(envelope, COMMAND_SUBTYPE, folder, message); } @Override public String updateConfig(Envelope envelope, String config, Long version) { - publish(envelope, CONFIG_CATEGORY, null, config); + publish(envelope, CONFIG_SUBTYPE, null, config); return config; } diff --git a/validator/.idea/runConfigurations/Validator_config.xml b/validator/.idea/runConfigurations/Validator_config.xml index 9b669ddd3b..2b01c481a8 100644 --- a/validator/.idea/runConfigurations/Validator_config.xml +++ b/validator/.idea/runConfigurations/Validator_config.xml @@ -3,7 +3,7 @@