Juniper / jtimon

Junos Telemetry Interface (JTI) client
Apache License 2.0
31 stars 10 forks source link

updated pre-gnmi to add component_id and sub_component_id as tags for influx #24

Closed amohit1315 closed 9 months ago

amohit1315 commented 9 months ago

updated pre-gnmi to add component_id and sub_component_id as tags for influx Issue: #16

amohit@amohit-mbp jtimon % make
rm -f jtimon-*
rm -f jtimon
GOOS=linux GOARCH=amd64 go build -mod vendor --ldflags="-X main.jtimonVersion=v2.0.2-1d2e7f7ffc227de451f091892d668a96b472a893-master -X main.buildTime=2024-02-09T03:26:13-0800" -o jtimon-linux-amd64 .
GOOS=darwin GOARCH=amd64 go build -mod vendor --ldflags="-X main.jtimonVersion=v2.0.2-1d2e7f7ffc227de451f091892d668a96b472a893-master -X main.buildTime=2024-02-09T03:26:16-0800" -o jtimon-darwin-amd64 .
go vet
go test --covermode=count -v --coverprofile=coverage.out
TestMain - waiting 3s for JTISIM and Influx Store to come up
TestMain - done waiting
=== RUN   TestNewAlias
=== RUN   TestNewAlias/invalid-file
=== RUN   TestNewAlias/valid-file-syntax_error
=== RUN   TestNewAlias/valid-file
--- PASS: TestNewAlias (0.00s)
    --- PASS: TestNewAlias/invalid-file (0.00s)
    --- PASS: TestNewAlias/valid-file-syntax_error (0.00s)
    --- PASS: TestNewAlias/valid-file (0.00s)
=== RUN   TestNewJTIMONConfig
=== RUN   TestNewJTIMONConfig/tests/data/noerror.json
=== RUN   TestNewJTIMONConfig/tests/data/error.jso
=== RUN   TestNewJTIMONConfig/tests/data/error.json
--- PASS: TestNewJTIMONConfig (0.00s)
    --- PASS: TestNewJTIMONConfig/tests/data/noerror.json (0.00s)
    --- PASS: TestNewJTIMONConfig/tests/data/error.jso (0.00s)
    --- PASS: TestNewJTIMONConfig/tests/data/error.json (0.00s)
=== RUN   TestNewJTIMONConfigFilelist
=== RUN   TestNewJTIMONConfigFilelist/tests/data/file_list.json
=== RUN   TestNewJTIMONConfigFilelist/tests/data/file_list.jso
=== RUN   TestNewJTIMONConfigFilelist/tests/data/file_list_err.json
--- PASS: TestNewJTIMONConfigFilelist (0.00s)
    --- PASS: TestNewJTIMONConfigFilelist/tests/data/file_list.json (0.00s)
    --- PASS: TestNewJTIMONConfigFilelist/tests/data/file_list.jso (0.00s)
    --- PASS: TestNewJTIMONConfigFilelist/tests/data/file_list_err.json (0.00s)
=== RUN   TestValidateConfig
=== RUN   TestValidateConfig/tests/data/noerror.json
=== RUN   TestValidateConfig/tests/data/error.jso
=== RUN   TestValidateConfig/tests/data/error.json
--- PASS: TestValidateConfig (0.00s)
    --- PASS: TestValidateConfig/tests/data/noerror.json (0.00s)
    --- PASS: TestValidateConfig/tests/data/error.jso (0.00s)
    --- PASS: TestValidateConfig/tests/data/error.json (0.00s)
=== RUN   TestExploreConfig
=== RUN   TestExploreConfig/explore-config
--- PASS: TestExploreConfig (0.00s)
    --- PASS: TestExploreConfig/explore-config (0.00s)
=== RUN   TestStringInSlice
=== RUN   TestStringInSlice/first
=== RUN   TestStringInSlice/two
=== RUN   TestStringInSlice/third
--- PASS: TestStringInSlice (0.00s)
    --- PASS: TestStringInSlice/first (0.00s)
    --- PASS: TestStringInSlice/two (0.00s)
    --- PASS: TestStringInSlice/third (0.00s)
=== RUN   TestXPathTognmiPath
=== RUN   TestXPathTognmiPath/multi-level-multi-keys
=== RUN   TestXPathTognmiPath/multi-level-multi-keys-err
=== RUN   TestXPathTognmiPath/multi-level-multi-keys-xpath-err
--- PASS: TestXPathTognmiPath (0.00s)
    --- PASS: TestXPathTognmiPath/multi-level-multi-keys (0.00s)
    --- PASS: TestXPathTognmiPath/multi-level-multi-keys-err (0.00s)
    --- PASS: TestXPathTognmiPath/multi-level-multi-keys-xpath-err (0.00s)
=== RUN   TestGnmiMode
=== RUN   TestGnmiMode/gnmi-mode-on-change
=== RUN   TestGnmiMode/gnmi-mode-sample
=== RUN   TestGnmiMode/gnmi-mode-err
--- PASS: TestGnmiMode (0.00s)
    --- PASS: TestGnmiMode/gnmi-mode-on-change (0.00s)
    --- PASS: TestGnmiMode/gnmi-mode-sample (0.00s)
    --- PASS: TestGnmiMode/gnmi-mode-err (0.00s)
=== RUN   TestGnmiFreq
=== RUN   TestGnmiFreq/gnmi-freq-sample
=== RUN   TestGnmiFreq/gnmi-freq-on-change
=== RUN   TestGnmiFreq/gnmi-freq-sample-taken-as-on-change
=== RUN   TestGnmiFreq/gnmi-freq-target-defined
=== RUN   TestGnmiFreq/gnmi-freq-sample-err
--- PASS: TestGnmiFreq (0.00s)
    --- PASS: TestGnmiFreq/gnmi-freq-sample (0.00s)
    --- PASS: TestGnmiFreq/gnmi-freq-on-change (0.00s)
    --- PASS: TestGnmiFreq/gnmi-freq-sample-taken-as-on-change (0.00s)
    --- PASS: TestGnmiFreq/gnmi-freq-target-defined (0.00s)
    --- PASS: TestGnmiFreq/gnmi-freq-sample-err (0.00s)
=== RUN   TestGnmiParseUpdates
=== RUN   TestGnmiParseUpdates/updates-valid-no-prefix
=== RUN   TestGnmiParseUpdates/updates-valid-with-prefix
=== RUN   TestGnmiParseUpdates/updates-valid-with-misc-simple-types
=== RUN   TestGnmiParseUpdates/updates-valid-scalar-array
=== RUN   TestGnmiParseUpdates/updates-valid-with-misc-simple-types-json
=== RUN   TestGnmiParseUpdates/updates-valid-with-misc-simple-types-json_ietf
=== RUN   TestGnmiParseUpdates/updates-valid-no-prefix-with-origin--config--donotParseOrigin
=== RUN   TestGnmiParseUpdates/updates-valid-no-prefix-with-origin--config--parseOrigin
=== RUN   TestGnmiParseUpdates/updates-valid-with-misc-simple-types-uint-enabled
--- PASS: TestGnmiParseUpdates (0.00s)
    --- PASS: TestGnmiParseUpdates/updates-valid-no-prefix (0.00s)
    --- PASS: TestGnmiParseUpdates/updates-valid-with-prefix (0.00s)
    --- PASS: TestGnmiParseUpdates/updates-valid-with-misc-simple-types (0.00s)
    --- PASS: TestGnmiParseUpdates/updates-valid-scalar-array (0.00s)
    --- PASS: TestGnmiParseUpdates/updates-valid-with-misc-simple-types-json (0.00s)
    --- PASS: TestGnmiParseUpdates/updates-valid-with-misc-simple-types-json_ietf (0.00s)
    --- PASS: TestGnmiParseUpdates/updates-valid-no-prefix-with-origin--config--donotParseOrigin (0.00s)
    --- PASS: TestGnmiParseUpdates/updates-valid-no-prefix-with-origin--config--parseOrigin (0.00s)
    --- PASS: TestGnmiParseUpdates/updates-valid-with-misc-simple-types-uint-enabled (0.00s)
=== RUN   TestGnmiParseDeletes
=== RUN   TestGnmiParseDeletes/deletes-valid-no-prefix
=== RUN   TestGnmiParseDeletes/deletes-valid-no-prefix-with-origin
--- PASS: TestGnmiParseDeletes (0.00s)
    --- PASS: TestGnmiParseDeletes/deletes-valid-no-prefix (0.00s)
    --- PASS: TestGnmiParseDeletes/deletes-valid-no-prefix-with-origin (0.00s)
=== RUN   TestFormJuniperTelemetryHdr
=== RUN   TestFormJuniperTelemetryHdr/juniper-gnmi-header-in-updates-parsed-as-xpaths
=== RUN   TestFormJuniperTelemetryHdr/juniper-gnmi-header-in-extension
=== RUN   TestFormJuniperTelemetryHdr/other-vendor
--- PASS: TestFormJuniperTelemetryHdr (0.00s)
    --- PASS: TestFormJuniperTelemetryHdr/juniper-gnmi-header-in-updates-parsed-as-xpaths (0.00s)
    --- PASS: TestFormJuniperTelemetryHdr/juniper-gnmi-header-in-extension (0.00s)
    --- PASS: TestFormJuniperTelemetryHdr/other-vendor (0.00s)
=== RUN   TestGnmiParsePath
--- PASS: TestGnmiParsePath (0.00s)
=== RUN   TestGnmiParseValue
--- PASS: TestGnmiParseValue (0.00s)
=== RUN   TestSpitTagsNPath
=== RUN   TestSpitTagsNPath/path-without-tags
=== RUN   TestSpitTagsNPath/ifd-admin-status
=== RUN   TestSpitTagsNPath/ifl-admin-status
=== RUN   TestSpitTagsNPath/cmerror
=== RUN   TestSpitTagsNPath/events
=== RUN   TestSpitTagsNPath/events-2
--- PASS: TestSpitTagsNPath (0.00s)
    --- PASS: TestSpitTagsNPath/path-without-tags (0.00s)
    --- PASS: TestSpitTagsNPath/ifd-admin-status (0.00s)
    --- PASS: TestSpitTagsNPath/ifl-admin-status (0.00s)
    --- PASS: TestSpitTagsNPath/cmerror (0.00s)
    --- PASS: TestSpitTagsNPath/events (0.00s)
    --- PASS: TestSpitTagsNPath/events-2 (0.00s)
=== RUN   TestSubscriptionPathFromPath
--- PASS: TestSubscriptionPathFromPath (0.00s)
=== RUN   TestCheckAndCeilFloatValues
=== RUN   TestCheckAndCeilFloatValues/PracticalMaxLowerBoun
=== RUN   TestCheckAndCeilFloatValues/PracticalMaxUpperBound
=== RUN   TestCheckAndCeilFloatValues/PracticalNonMax
=== RUN   TestCheckAndCeilFloatValues/Float32
=== RUN   TestCheckAndCeilFloatValues/negInf64PracticalMaxLowerBound
=== RUN   TestCheckAndCeilFloatValues/negInf64PracticalMaxUpperBound
=== RUN   TestCheckAndCeilFloatValues/PracticalNonMin
=== RUN   TestCheckAndCeilFloatValues/Float32Min
=== RUN   TestCheckAndCeilFloatValues/Zero32
=== RUN   TestCheckAndCeilFloatValues/Zero64
--- PASS: TestCheckAndCeilFloatValues (0.00s)
    --- PASS: TestCheckAndCeilFloatValues/PracticalMaxLowerBoun (0.00s)
    --- PASS: TestCheckAndCeilFloatValues/PracticalMaxUpperBound (0.00s)
    --- PASS: TestCheckAndCeilFloatValues/PracticalNonMax (0.00s)
    --- PASS: TestCheckAndCeilFloatValues/Float32 (0.00s)
    --- PASS: TestCheckAndCeilFloatValues/negInf64PracticalMaxLowerBound (0.00s)
    --- PASS: TestCheckAndCeilFloatValues/negInf64PracticalMaxUpperBound (0.00s)
    --- PASS: TestCheckAndCeilFloatValues/PracticalNonMin (0.00s)
    --- PASS: TestCheckAndCeilFloatValues/Float32Min (0.00s)
    --- PASS: TestCheckAndCeilFloatValues/Zero32 (0.00s)
    --- PASS: TestCheckAndCeilFloatValues/Zero64 (0.00s)
=== RUN   TestTransformPath
=== RUN   TestTransformPath/noenv1
=== RUN   TestTransformPath/env1
=== RUN   TestTransformPath/noenv2
=== RUN   TestTransformPath/env2
=== RUN   TestTransformPath/env3
--- PASS: TestTransformPath (0.00s)
    --- PASS: TestTransformPath/noenv1 (0.00s)
    --- PASS: TestTransformPath/env1 (0.00s)
    --- PASS: TestTransformPath/noenv2 (0.00s)
    --- PASS: TestTransformPath/env2 (0.00s)
    --- PASS: TestTransformPath/env3 (0.00s)
=== RUN   TestXRInflux
=== RUN   TestXRInflux/xr-all
2024/02/09 03:26:22 open: tests/data/cisco-ios-xr/config/xr-all-influx.json.testres
2024/02/09 03:26:22 logging in tests/data/cisco-ios-xr/config/xr-all-influx.log for 172.27.113.191:32767 [periodic stats every 0 seconds]
name: tests/data/cisco-ios-xr/schema/
2024/02/09 03:26:35 close: tests/data/cisco-ios-xr/config/xr-all-influx.json.testres
=== RUN   TestXRInflux/xr-wdsysmon
2024/02/09 03:26:35 open: tests/data/cisco-ios-xr/config/xr-wdsysmon-influx.json.testres
2024/02/09 03:26:35 logging in tests/data/cisco-ios-xr/config/xr-wdsysmon-influx.log for 172.27.113.191:32767 [periodic stats every 0 seconds]
name: tests/data/cisco-ios-xr/schema/
2024/02/09 03:26:43 close: tests/data/cisco-ios-xr/config/xr-wdsysmon-influx.json.testres
--- PASS: TestXRInflux (20.14s)
    --- PASS: TestXRInflux/xr-all (12.10s)
    --- PASS: TestXRInflux/xr-wdsysmon (8.04s)
=== RUN   TestXRTagsPoints
=== RUN   TestXRTagsPoints/xr-all
name: tests/data/cisco-ios-xr/schema/
=== RUN   TestXRTagsPoints/xr-wdsysmon
name: tests/data/cisco-ios-xr/schema/
--- PASS: TestXRTagsPoints (0.20s)
    --- PASS: TestXRTagsPoints/xr-all (0.16s)
    --- PASS: TestXRTagsPoints/xr-wdsysmon (0.04s)
=== RUN   TestXRSchema
=== RUN   TestXRSchema/directory
name: tests/data/cisco-ios-xr/schema
=== RUN   TestXRSchema/file
name: tests/data/cisco-ios-xr/schema/interfaces.json
=== RUN   TestXRSchema/env
envPath: tests/data/cisco-ios-xr/schema/interfaces.json
--- PASS: TestXRSchema (0.00s)
    --- PASS: TestXRSchema/directory (0.00s)
    --- PASS: TestXRSchema/file (0.00s)
    --- PASS: TestXRSchema/env (0.00s)
=== RUN   Test_getFieldValueInterface
=== RUN   Test_getFieldValueInterface/unsigned-data-and-uint-enabled
=== RUN   Test_getFieldValueInterface/unsigned-data-and-uint-disabled
=== RUN   Test_getFieldValueInterface/string
=== RUN   Test_getFieldValueInterface/uint32
=== RUN   Test_getFieldValueInterface/sint32
=== RUN   Test_getFieldValueInterface/sint64
=== RUN   Test_getFieldValueInterface/double
=== RUN   Test_getFieldValueInterface/bool
=== RUN   Test_getFieldValueInterface/bytes
=== RUN   Test_getFieldValueInterface/default
--- PASS: Test_getFieldValueInterface (0.00s)
    --- PASS: Test_getFieldValueInterface/unsigned-data-and-uint-enabled (0.00s)
    --- PASS: Test_getFieldValueInterface/unsigned-data-and-uint-disabled (0.00s)
    --- PASS: Test_getFieldValueInterface/string (0.00s)
    --- PASS: Test_getFieldValueInterface/uint32 (0.00s)
    --- PASS: Test_getFieldValueInterface/sint32 (0.00s)
    --- PASS: Test_getFieldValueInterface/sint64 (0.00s)
    --- PASS: Test_getFieldValueInterface/double (0.00s)
    --- PASS: Test_getFieldValueInterface/bool (0.00s)
    --- PASS: Test_getFieldValueInterface/bytes (0.00s)
    --- PASS: Test_getFieldValueInterface/default (0.00s)
=== RUN   TestGnmiHandleResponse
=== RUN   TestGnmiHandleResponse/rsp-valid-sync
=== RUN   TestGnmiHandleResponse/rsp-valid-updates
=== RUN   TestGnmiHandleResponse/rsp-valid-deletes
=== RUN   TestGnmiHandleResponse/rsp-check-not-expecting-eos-juniper-isync-packet-ext
=== RUN   TestGnmiHandleResponse/rsp-check-not-expecting-eos-juniper-isync-packet-xpath
=== RUN   TestGnmiHandleResponse/rsp-valid-sync-ipv6
=== RUN   TestGnmiHandleResponse/rsp-valid-updates-ipv6
=== RUN   TestGnmiHandleResponse/rsp-valid-deletes-ipv6
=== RUN   TestGnmiHandleResponse/rsp-check-not-expecting-eos-juniper-isync-packet-ext-ipv6
=== RUN   TestGnmiHandleResponse/rsp-check-not-expecting-eos-juniper-isync-packet-xpath-ipv6
--- PASS: TestGnmiHandleResponse (0.00s)
    --- PASS: TestGnmiHandleResponse/rsp-valid-sync (0.00s)
    --- PASS: TestGnmiHandleResponse/rsp-valid-updates (0.00s)
    --- PASS: TestGnmiHandleResponse/rsp-valid-deletes (0.00s)
    --- PASS: TestGnmiHandleResponse/rsp-check-not-expecting-eos-juniper-isync-packet-ext (0.00s)
    --- PASS: TestGnmiHandleResponse/rsp-check-not-expecting-eos-juniper-isync-packet-xpath (0.00s)
    --- PASS: TestGnmiHandleResponse/rsp-valid-sync-ipv6 (0.00s)
    --- PASS: TestGnmiHandleResponse/rsp-valid-updates-ipv6 (0.00s)
    --- PASS: TestGnmiHandleResponse/rsp-valid-deletes-ipv6 (0.00s)
    --- PASS: TestGnmiHandleResponse/rsp-check-not-expecting-eos-juniper-isync-packet-ext-ipv6 (0.00s)
    --- PASS: TestGnmiHandleResponse/rsp-check-not-expecting-eos-juniper-isync-packet-xpath-ipv6 (0.00s)
=== RUN   TestSubscribegNMI
--- PASS: TestSubscribegNMI (0.00s)
=== RUN   TestPublishToPrometheus
--- PASS: TestPublishToPrometheus (0.00s)
=== RUN   TestPublishToInflux
--- PASS: TestPublishToInflux (0.00s)
=== RUN   TestGnmiParseHeader
--- PASS: TestGnmiParseHeader (0.00s)
=== RUN   TestGnmiParseNotification
--- PASS: TestGnmiParseNotification (0.00s)
=== RUN   TestJTISIMSigHup
2024/02/09 03:26:43 logging in tests/data/juniper-junos/config/jtisim-interfaces-1.log for 127.0.0.1:50051 [periodic stats every 2 seconds]
2024/02/09 03:26:43 127.0.0.1, jctx.config.Kafka.producer: <nil>
2024/02/09 03:26:43 logging in tests/data/juniper-junos/config/jtisim-interfaces-2.log for 127.0.0.1:50051 [periodic stats every 2 seconds]
2024/02/09 03:26:43 127.0.0.1, jctx.config.Kafka.producer: <nil>
2024/02/09 03:26:43 logging in tests/data/juniper-junos/config/jtisim-interfaces-3.log for 127.0.0.1:50051 [periodic stats every 2 seconds]
2024/02/09 03:26:43 127.0.0.1, jctx.config.Kafka.producer: <nil>
Calling subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-2.json
Calling subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-1.json
Calling subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-3.json
2024/02/09 03:26:43 Client metadata:
2024/02/09 03:26:43 Client metadata:
2024/02/09 03:26:43 Client metadata:
2024/02/09 03:26:43 map[:authority:[127.0.0.1:50051] content-type:[application/grpc] grpc-accept-encoding:[gzip] user-agent:[grpc-go/1.53.0]]
2024/02/09 03:26:43 /interfaces 10000
2024/02/09 03:26:43 map[:authority:[127.0.0.1:50051] content-type:[application/grpc] grpc-accept-encoding:[gzip] user-agent:[grpc-go/1.53.0]]
2024/02/09 03:26:43 /interfaces 10000
2024/02/09 03:26:43 map[:authority:[127.0.0.1:50051] content-type:[application/grpc] grpc-accept-encoding:[gzip] user-agent:[grpc-go/1.53.0]]
2024/02/09 03:26:43 /interfaces 10000
[1] -----  tests/data/juniper-junos/config/jtisim-interfaces-1.json 40
[1] -----  tests/data/juniper-junos/config/jtisim-interfaces-2.json 40
[1] -----  tests/data/juniper-junos/config/jtisim-interfaces-3.json 40
2024/02/09 03:26:47 sending sighup to the worker for tests/data/juniper-junos/config/jtisim-interfaces-3.json
2024/02/09 03:26:47 deleting worker for tests/data/juniper-junos/config/jtisim-interfaces-1.json
2024/02/09 03:26:47 deleting worker for tests/data/juniper-junos/config/jtisim-interfaces-2.json
Returns subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-2.json CODE :::  2
Returns subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-1.json CODE :::  2
[2] -----  tests/data/juniper-junos/config/jtisim-interfaces-3.json 40
2024/02/09 03:26:53 adding a new worker for tests/data/juniper-junos/config/jtisim-interfaces-1.json
2024/02/09 03:26:53 logging in tests/data/juniper-junos/config/jtisim-interfaces-1.log for 127.0.0.1:50051 [periodic stats every 2 seconds]
2024/02/09 03:26:53 127.0.0.1, jctx.config.Kafka.producer: <nil>
Calling subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-1.json
2024/02/09 03:26:53 adding a new worker for tests/data/juniper-junos/config/jtisim-interfaces-2.json
2024/02/09 03:26:53 logging in tests/data/juniper-junos/config/jtisim-interfaces-2.log for 127.0.0.1:50051 [periodic stats every 2 seconds]
2024/02/09 03:26:53 127.0.0.1, jctx.config.Kafka.producer: <nil>
Calling subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-2.json
2024/02/09 03:26:53 sending sighup to the worker for tests/data/juniper-junos/config/jtisim-interfaces-3.json
2024/02/09 03:26:53 Client metadata:
2024/02/09 03:26:53 map[:authority:[127.0.0.1:50051] content-type:[application/grpc] grpc-accept-encoding:[gzip] user-agent:[grpc-go/1.53.0]]
2024/02/09 03:26:53 /interfaces 10000
2024/02/09 03:26:53 Client metadata:
2024/02/09 03:26:53 map[:authority:[127.0.0.1:50051] content-type:[application/grpc] grpc-accept-encoding:[gzip] user-agent:[grpc-go/1.53.0]]
2024/02/09 03:26:53 /interfaces 10000
Returns subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-2.json CODE :::  2
Returns subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-1.json CODE :::  2
Returns subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-3.json CODE :::  2
--- PASS: TestJTISIMSigHup (14.00s)
=== RUN   TestJTISIMSigHupChanged
2024/02/09 03:26:57 logging in tests/data/juniper-junos/config/jtisim-interfaces-1.log for 127.0.0.1:50051 [periodic stats every 2 seconds]
2024/02/09 03:26:57 127.0.0.1, jctx.config.Kafka.producer: <nil>
2024/02/09 03:26:57 logging in tests/data/juniper-junos/config/jtisim-interfaces-2.log for 127.0.0.1:50051 [periodic stats every 2 seconds]
2024/02/09 03:26:57 127.0.0.1, jctx.config.Kafka.producer: <nil>
2024/02/09 03:26:57 logging in tests/data/juniper-junos/config/jtisim-interfaces-3.log for 127.0.0.1:50051 [periodic stats every 2 seconds]
2024/02/09 03:26:57 127.0.0.1, jctx.config.Kafka.producer: <nil>
Calling subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-3.json
Calling subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-2.json
Calling subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-1.json
2024/02/09 03:26:57 Client metadata:
2024/02/09 03:26:57 map[:authority:[127.0.0.1:50051] content-type:[application/grpc] grpc-accept-encoding:[gzip] user-agent:[grpc-go/1.53.0]]
2024/02/09 03:26:57 Client metadata:
2024/02/09 03:26:57 map[:authority:[127.0.0.1:50051] content-type:[application/grpc] grpc-accept-encoding:[gzip] user-agent:[grpc-go/1.53.0]]
2024/02/09 03:26:57 /interfaces 10000
2024/02/09 03:26:57 /interfaces 10000
2024/02/09 03:26:57 Client metadata:
2024/02/09 03:26:57 map[:authority:[127.0.0.1:50051] content-type:[application/grpc] grpc-accept-encoding:[gzip] user-agent:[grpc-go/1.53.0]]
2024/02/09 03:26:57 /interfaces 10000
[1] -----  tests/data/juniper-junos/config/jtisim-interfaces-1.json 40
[1] -----  tests/data/juniper-junos/config/jtisim-interfaces-2.json 40
[1] -----  tests/data/juniper-junos/config/jtisim-interfaces-3.json 40
2024/02/09 03:27:01 sending sighup to the worker for tests/data/juniper-junos/config/jtisim-interfaces-3.json
2024/02/09 03:27:01 deleting worker for tests/data/juniper-junos/config/jtisim-interfaces-1.json
2024/02/09 03:27:01 deleting worker for tests/data/juniper-junos/config/jtisim-interfaces-2.json
Returns subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-2.json CODE :::  2
Returns subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-1.json CODE :::  2
[2] -----  tests/data/juniper-junos/config/jtisim-interfaces-3.json 40
2024/02/09 03:27:07 adding a new worker for tests/data/juniper-junos/config/jtisim-interfaces-1.json
2024/02/09 03:27:07 logging in tests/data/juniper-junos/config/jtisim-interfaces-1.log for 127.0.0.1:50051 [periodic stats every 2 seconds]
2024/02/09 03:27:07 127.0.0.1, jctx.config.Kafka.producer: <nil>
Calling subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-1.json
2024/02/09 03:27:07 adding a new worker for tests/data/juniper-junos/config/jtisim-interfaces-2.json
2024/02/09 03:27:07 logging in tests/data/juniper-junos/config/jtisim-interfaces-2.log for 127.0.0.1:50051 [periodic stats every 2 seconds]
2024/02/09 03:27:07 127.0.0.1, jctx.config.Kafka.producer: <nil>
Calling subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-2.json
2024/02/09 03:27:07 adding a new worker for tests/data/juniper-junos/config/jtisim-interfaces-6.json
2024/02/09 03:27:07 logging in tests/data/juniper-junos/config/jtisim-interfaces-6.log for 127.0.0.1:50051 [periodic stats every 2 seconds]
2024/02/09 03:27:07 127.0.0.1, jctx.config.Kafka.producer: <nil>
Calling subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-6.json
2024/02/09 03:27:07 deleting worker for tests/data/juniper-junos/config/jtisim-interfaces-3.json
Returns subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-3.json CODE :::  2
2024/02/09 03:27:07 Client metadata:
2024/02/09 03:27:07 map[:authority:[127.0.0.1:50051] content-type:[application/grpc] grpc-accept-encoding:[gzip] user-agent:[grpc-go/1.53.0]]
2024/02/09 03:27:07 /interfaces 10000
2024/02/09 03:27:07 Client metadata:
2024/02/09 03:27:07 map[:authority:[127.0.0.1:50051] content-type:[application/grpc] grpc-accept-encoding:[gzip] user-agent:[grpc-go/1.53.0]]
2024/02/09 03:27:07 /interfaces 20000
2024/02/09 03:27:07 Client metadata:
2024/02/09 03:27:07 map[:authority:[127.0.0.1:50051] content-type:[application/grpc] grpc-accept-encoding:[gzip] user-agent:[grpc-go/1.53.0]]
2024/02/09 03:27:07 /interfaces 10000
Returns subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-1.json CODE :::  2
Returns subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-6.json CODE :::  2
Returns subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-2.json CODE :::  2
--- PASS: TestJTISIMSigHupChanged (14.00s)
=== RUN   TestJTISIMSigInt
2024/02/09 03:27:11 logging in tests/data/juniper-junos/config/jtisim-interfaces-1.log for 127.0.0.1:50051 [periodic stats every 2 seconds]
2024/02/09 03:27:11 127.0.0.1, jctx.config.Kafka.producer: <nil>
2024/02/09 03:27:11 logging in tests/data/juniper-junos/config/jtisim-interfaces-2.log for 127.0.0.1:50051 [periodic stats every 2 seconds]
2024/02/09 03:27:11 127.0.0.1, jctx.config.Kafka.producer: <nil>
2024/02/09 03:27:11 logging in tests/data/juniper-junos/config/jtisim-interfaces-3.log for 127.0.0.1:50051 [periodic stats every 2 seconds]
2024/02/09 03:27:11 127.0.0.1, jctx.config.Kafka.producer: <nil>
Calling subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-3.json
Calling subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-1.json
Calling subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-2.json
2024/02/09 03:27:11 Client metadata:
2024/02/09 03:27:11 map[:authority:[127.0.0.1:50051] content-type:[application/grpc] grpc-accept-encoding:[gzip] user-agent:[grpc-go/1.53.0]]
2024/02/09 03:27:11 /interfaces 10000
2024/02/09 03:27:11 Client metadata:
2024/02/09 03:27:11 map[:authority:[127.0.0.1:50051] content-type:[application/grpc] grpc-accept-encoding:[gzip] user-agent:[grpc-go/1.53.0]]
2024/02/09 03:27:11 /interfaces 10000
2024/02/09 03:27:11 Client metadata:
2024/02/09 03:27:11 map[:authority:[127.0.0.1:50051] content-type:[application/grpc] grpc-accept-encoding:[gzip] user-agent:[grpc-go/1.53.0]]
2024/02/09 03:27:11 /interfaces 10000
Returns subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-2.json CODE :::  2
Returns subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-1.json CODE :::  2
--- PASS: TestJTISIMSigInt (15.01s)
=== RUN   TestJTISIMRetrySigInt
Returns subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-3.json CODE :::  2
2024/02/09 03:27:26 logging in tests/data/juniper-junos/config/jtisim-interfaces-4.log for 127.0.0.1:90052 [periodic stats every 0 seconds]
2024/02/09 03:27:26 127.0.0.1, jctx.config.Kafka.producer: <nil>
Calling subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-4.json
Returns subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-4.json CODE :::  0
Calling subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-4.json
Returns subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-4.json CODE :::  0
--- PASS: TestJTISIMRetrySigInt (25.00s)
=== RUN   TestPrometheus
=== RUN   TestPrometheus/influx-1
2024/02/09 03:27:51 logging in tests/data/juniper-junos/config/jtisim-prometheus.log for 127.0.0.1:50051 [periodic stats every 2 seconds]
2024/02/09 03:27:51 127.0.0.1, jctx.config.Kafka.producer: <nil>
Calling subscribe() ::: tests/data/juniper-junos/config/jtisim-prometheus.json
2024/02/09 03:27:51 Client metadata:
2024/02/09 03:27:51 map[:authority:[127.0.0.1:50051] content-type:[application/grpc] grpc-accept-encoding:[gzip] user-agent:[grpc-go/1.53.0]]
2024/02/09 03:27:51 /interfaces 20000
Returns subscribe() ::: tests/data/juniper-junos/config/jtisim-prometheus.json CODE :::  2
--- PASS: TestPrometheus (6.03s)
    --- PASS: TestPrometheus/influx-1 (6.03s)
=== RUN   TestInflux
=== RUN   TestInflux/influx-1
2024/02/09 03:27:57 open: tests/data/juniper-junos/config/jtisim-influx.json.testres
2024/02/09 03:27:57 logging in tests/data/juniper-junos/config/jtisim-influx.log for 127.0.0.1:50051 [periodic stats every 2 seconds]
2024/02/09 03:27:57 127.0.0.1, jctx.config.Kafka.producer: <nil>
Calling subscribe() ::: tests/data/juniper-junos/config/jtisim-influx.json
2024/02/09 03:27:57 Client metadata:
2024/02/09 03:27:57 map[:authority:[127.0.0.1:50051] content-type:[application/grpc] grpc-accept-encoding:[gzip] user-agent:[grpc-go/1.53.0]]
2024/02/09 03:27:57 /interfaces 10000
Returns subscribe() ::: tests/data/juniper-junos/config/jtisim-influx.json CODE :::  2
2024/02/09 03:28:22 close: tests/data/juniper-junos/config/jtisim-influx.json.testres
=== RUN   TestInflux/influx-alias
2024/02/09 03:28:22 open: tests/data/juniper-junos/config/jtisim-influx-alias.json.testres
2024/02/09 03:28:22 logging in tests/data/juniper-junos/config/jtisim-influx-alias.log for 127.0.0.1:50051 [periodic stats every 2 seconds]
2024/02/09 03:28:22 127.0.0.1, jctx.config.Kafka.producer: <nil>
Calling subscribe() ::: tests/data/juniper-junos/config/jtisim-influx-alias.json
2024/02/09 03:28:22 Client metadata:
2024/02/09 03:28:22 map[:authority:[127.0.0.1:50051] content-type:[application/grpc] grpc-accept-encoding:[gzip] user-agent:[grpc-go/1.53.0]]
2024/02/09 03:28:22 /interfaces 10000
Returns subscribe() ::: tests/data/juniper-junos/config/jtisim-influx-alias.json CODE :::  2
2024/02/09 03:28:30 close: tests/data/juniper-junos/config/jtisim-influx-alias.json.testres
--- PASS: TestInflux (33.02s)
    --- PASS: TestInflux/influx-1 (25.01s)
    --- PASS: TestInflux/influx-alias (8.01s)
=== RUN   TestJTISIMMaxRun
=== RUN   TestJTISIMMaxRun/multi-file-list-1gzip
2024/02/09 03:28:30 logging in tests/data/juniper-junos/config/jtisim-interfaces-1.log for 127.0.0.1:50051 [periodic stats every 2 seconds]
2024/02/09 03:28:30 127.0.0.1, jctx.config.Kafka.producer: <nil>
2024/02/09 03:28:30 logging in tests/data/juniper-junos/config/jtisim-interfaces-2.log for 127.0.0.1:50051 [periodic stats every 2 seconds]
2024/02/09 03:28:30 127.0.0.1, jctx.config.Kafka.producer: <nil>
Calling subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-2.json
Calling subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-1.json
2024/02/09 03:28:30 Client metadata:
2024/02/09 03:28:30 map[:authority:[127.0.0.1:50051] content-type:[application/grpc] grpc-accept-encoding:[gzip] user-agent:[grpc-go/1.53.0]]
2024/02/09 03:28:30 /interfaces 10000
2024/02/09 03:28:30 Client metadata:
2024/02/09 03:28:30 map[:authority:[127.0.0.1:50051] content-type:[application/grpc] grpc-accept-encoding:[gzip] user-agent:[grpc-go/1.53.0]]
2024/02/09 03:28:30 /interfaces 10000
=== RUN   TestJTISIMMaxRun/multi-file-list-1
Returns subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-2.json CODE :::  2
Returns subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-1.json CODE :::  2
2024/02/09 03:28:55 logging in tests/data/juniper-junos/config/jtisim-interfaces-1.log for 127.0.0.1:50051 [periodic stats every 2 seconds]
2024/02/09 03:28:55 127.0.0.1, jctx.config.Kafka.producer: <nil>
2024/02/09 03:28:55 logging in tests/data/juniper-junos/config/jtisim-interfaces-2.log for 127.0.0.1:50051 [periodic stats every 2 seconds]
2024/02/09 03:28:55 127.0.0.1, jctx.config.Kafka.producer: <nil>
Calling subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-1.json
Calling subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-2.json
2024/02/09 03:28:55 Client metadata:
2024/02/09 03:28:55 map[:authority:[127.0.0.1:50051] content-type:[application/grpc] grpc-accept-encoding:[gzip] user-agent:[grpc-go/1.53.0]]
2024/02/09 03:28:55 /interfaces 10000
2024/02/09 03:28:55 Client metadata:
2024/02/09 03:28:55 map[:authority:[127.0.0.1:50051] content-type:[application/grpc] grpc-accept-encoding:[gzip] user-agent:[grpc-go/1.53.0]]
2024/02/09 03:28:55 /interfaces 10000
Returns subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-1.json CODE :::  2
--- PASS: TestJTISIMMaxRun (50.01s)
    --- PASS: TestJTISIMMaxRun/multi-file-list-1gzip (25.01s)
    --- PASS: TestJTISIMMaxRun/multi-file-list-1 (25.01s)
=== RUN   TestVMXTagsPoints
=== RUN   TestVMXTagsPoints/interfaces
Returns subscribe() ::: tests/data/juniper-junos/config/jtisim-interfaces-2.json CODE :::  2
=== RUN   TestVMXTagsPoints/interfaces_uint64
--- PASS: TestVMXTagsPoints (19.28s)
    --- PASS: TestVMXTagsPoints/interfaces (6.84s)
    --- PASS: TestVMXTagsPoints/interfaces_uint64 (12.43s)
=== RUN   TestCompareStrings
=== RUN   TestCompareStrings/space-equal
=== RUN   TestCompareStrings/space-not-equal
=== RUN   TestCompareStrings/multiline-space-equal
=== RUN   TestCompareStrings/multiline-space-not-equal
--- PASS: TestCompareStrings (0.00s)
    --- PASS: TestCompareStrings/space-equal (0.00s)
    --- PASS: TestCompareStrings/space-not-equal (0.00s)
    --- PASS: TestCompareStrings/multiline-space-equal (0.00s)
    --- PASS: TestCompareStrings/multiline-space-not-equal (0.00s)
=== RUN   TestTestUtils
2024/02/09 03:29:39 data len = 17
--- PASS: TestTestUtils (0.00s)
PASS
    github.com/Juniper/jtimon   coverage: 48.8% of statements
ok      github.com/Juniper/jtimon   200.417s
## go tool cover --html=coverage.out
go tool cover --func=coverage.out
github.com/Juniper/jtimon/alias.go:17:              NewAlias            100.0%
github.com/Juniper/jtimon/alias.go:41:              getAlias            100.0%
github.com/Juniper/jtimon/config.go:106:            NewJTIMONConfigFilelist     100.0%
github.com/Juniper/jtimon/config.go:113:            NewJTIMONConfig         100.0%
github.com/Juniper/jtimon/config.go:119:            fillupDefaults          100.0%
github.com/Juniper/jtimon/config.go:139:            ParseJSONConfigFileList     100.0%
github.com/Juniper/jtimon/config.go:155:            ParseJSON           90.0%
github.com/Juniper/jtimon/config.go:176:            ValidateConfig          75.0%
github.com/Juniper/jtimon/config.go:186:            ExploreConfig           85.7%
github.com/Juniper/jtimon/config.go:202:            IsVerboseLogging        100.0%
github.com/Juniper/jtimon/config.go:207:            GetConfigFiles          75.0%
github.com/Juniper/jtimon/config.go:228:            DecodePassword          23.1%
github.com/Juniper/jtimon/config.go:248:            isConfigChanged         29.2%
github.com/Juniper/jtimon/config.go:296:            HandleConfigChange      38.1%
github.com/Juniper/jtimon/config.go:333:            ConfigRead          76.0%
github.com/Juniper/jtimon/config.go:376:            StringInSlice           100.0%
github.com/Juniper/jtimon/defaults.go:25:           convertToString         44.4%
github.com/Juniper/jtimon/dialout.go:64:            newDialOutServer        0.0%
github.com/Juniper/jtimon/dialout.go:108:           createRpc           0.0%
github.com/Juniper/jtimon/dialout.go:114:           getUnusedRpcId          0.0%
github.com/Juniper/jtimon/dialout.go:140:           createOrUpdateDeviceWithNewRpc  0.0%
github.com/Juniper/jtimon/dialout.go:171:           removeRpcFromDevice     0.0%
github.com/Juniper/jtimon/dialout.go:178:           DialOutSubscriber       0.0%
github.com/Juniper/jtimon/dialout.go:316:           consumePartition        0.0%
github.com/Juniper/jtimon/dialout.go:393:           populateAllConfig       0.0%
github.com/Juniper/jtimon/dialout.go:421:           startDialOutServer      0.0%
github.com/Juniper/jtimon/gnmi_utils.go:75:         xPathTognmiPath         87.0%
github.com/Juniper/jtimon/gnmi_utils.go:114:            gnmiMode            100.0%
github.com/Juniper/jtimon/gnmi_utils.go:126:            gnmiFreq            100.0%
github.com/Juniper/jtimon/gnmi_utils.go:147:            gnmiParseUpdates        83.3%
github.com/Juniper/jtimon/gnmi_utils.go:216:            gnmiParseDeletes        100.0%
github.com/Juniper/jtimon/gnmi_utils.go:256:            gnmiParsePath           100.0%
github.com/Juniper/jtimon/gnmi_utils.go:282:            gnmiParseValue          62.3%
github.com/Juniper/jtimon/gnmi_utils.go:411:            formJuniperTelemetryHdr     80.0%
github.com/Juniper/jtimon/grpc.go:14:               getSecurityOptions      33.3%
github.com/Juniper/jtimon/grpc.go:41:               getGPRCDialOptions      77.8%
github.com/Juniper/jtimon/influx.go:57:             newMetricIDB            100.0%
github.com/Juniper/jtimon/influx.go:65:             accumulate          100.0%
github.com/Juniper/jtimon/influx.go:71:             pointAcculumator        69.7%
github.com/Juniper/jtimon/influx.go:224:            dbBatchWriteM           0.0%
github.com/Juniper/jtimon/influx.go:307:            dbBatchWrite            83.3%
github.com/Juniper/jtimon/influx.go:357:            spitTagsNPath           100.0%
github.com/Juniper/jtimon/influx.go:397:            SubscriptionPathFromPath    100.0%
github.com/Juniper/jtimon/influx.go:405:            mName               33.3%
github.com/Juniper/jtimon/influx.go:422:            newRow              100.0%
github.com/Juniper/jtimon/influx.go:430:            addIDB              65.9%
github.com/Juniper/jtimon/influx.go:584:            getInfluxClient         72.7%
github.com/Juniper/jtimon/influx.go:609:            queryIDB            71.4%
github.com/Juniper/jtimon/influx.go:625:            closeInfluxClient       100.0%
github.com/Juniper/jtimon/influx.go:629:            influxInit          78.3%
github.com/Juniper/jtimon/influx.go:667:            checkAndCeilFloatValues     62.5%
github.com/Juniper/jtimon/kafka-publish.go:36:          KafkaConnect            0.0%
github.com/Juniper/jtimon/kafka-publish.go:105:         KafkaInit           44.4%
github.com/Juniper/jtimon/kafka-publish.go:123:         addKafka            16.7%
github.com/Juniper/jtimon/kafka-publish.go:147:         getCertPool         0.0%
github.com/Juniper/jtimon/kafka-publish.go:164:         loadCert            0.0%
github.com/Juniper/jtimon/kafka_consumer.go:16:         createKafkaConsumerGroup    0.0%
github.com/Juniper/jtimon/kafka_consumer.go:61:         Setup               0.0%
github.com/Juniper/jtimon/kafka_consumer.go:68:         Cleanup             0.0%
github.com/Juniper/jtimon/kafka_consumer.go:74:         ConsumeClaim            0.0%
github.com/Juniper/jtimon/logs.go:9:                jLog                60.0%
github.com/Juniper/jtimon/logs.go:20:               logStop             100.0%
github.com/Juniper/jtimon/logs.go:29:               logInit             72.2%
github.com/Juniper/jtimon/main.go:52:               main                0.0%
github.com/Juniper/jtimon/multi_vendor.go:18:           getVendor           72.7%
github.com/Juniper/jtimon/multi_vendor.go:39:           newJuniperJUNOS         100.0%
github.com/Juniper/jtimon/multi_vendor.go:49:           newCiscoIOSXR           100.0%
github.com/Juniper/jtimon/multi_vendor.go:59:           newGNMI             100.0%
github.com/Juniper/jtimon/multi_vendor.go:69:           newPrePostGNMI          100.0%
github.com/Juniper/jtimon/multi_vendor.go:79:           subscribePrePostGNMI        0.0%
github.com/Juniper/jtimon/multi_vendor.go:106:          getGnmiPaths            0.0%
github.com/Juniper/jtimon/multi_vendor.go:116:          getPreGnmiPaths         0.0%
github.com/Juniper/jtimon/prometheus_exporter.go:22:        promName            100.0%
github.com/Juniper/jtimon/prometheus_exporter.go:29:        convertToTag            100.0%
github.com/Juniper/jtimon/prometheus_exporter.go:51:        newJTIMONPExporter      100.0%
github.com/Juniper/jtimon/prometheus_exporter.go:58:        processJTIMONMetric     91.7%
github.com/Juniper/jtimon/prometheus_exporter.go:81:        Collect             100.0%
github.com/Juniper/jtimon/prometheus_exporter.go:99:        Describe            100.0%
github.com/Juniper/jtimon/prometheus_exporter.go:103:       getMapKey           100.0%
github.com/Juniper/jtimon/prometheus_exporter.go:122:       addPrometheus           56.8%
github.com/Juniper/jtimon/prometheus_exporter.go:207:       promInit            100.0%
github.com/Juniper/jtimon/statshandler.go:27:           TagConn             100.0%
github.com/Juniper/jtimon/statshandler.go:31:           TagRPC              100.0%
github.com/Juniper/jtimon/statshandler.go:35:           HandleConn          100.0%
github.com/Juniper/jtimon/statshandler.go:43:           HandleRPC           100.0%
github.com/Juniper/jtimon/statshandler.go:61:           updateStats         100.0%
github.com/Juniper/jtimon/statshandler.go:72:           updateStatsKV           100.0%
github.com/Juniper/jtimon/statshandler.go:84:           periodicStats           91.3%
github.com/Juniper/jtimon/statshandler.go:128:          printSummary            92.3%
github.com/Juniper/jtimon/subscribe_cisco_iosxr.go:36:      GetRequestMetadata      0.0%
github.com/Juniper/jtimon/subscribe_cisco_iosxr.go:44:      RequireTransportSecurity    0.0%
github.com/Juniper/jtimon/subscribe_cisco_iosxr.go:48:      dialExtensionXR         0.0%
github.com/Juniper/jtimon/subscribe_cisco_iosxr.go:71:      String              100.0%
github.com/Juniper/jtimon/subscribe_cisco_iosxr.go:79:      newSchema           100.0%
github.com/Juniper/jtimon/subscribe_cisco_iosxr.go:83:      String              100.0%
github.com/Juniper/jtimon/subscribe_cisco_iosxr.go:93:      swalk               100.0%
github.com/Juniper/jtimon/subscribe_cisco_iosxr.go:103:     getXRSchemaNode         75.0%
github.com/Juniper/jtimon/subscribe_cisco_iosxr.go:117:     getXRSchemaPaths        90.9%
github.com/Juniper/jtimon/subscribe_cisco_iosxr.go:139:     getXRSchema         75.0%
github.com/Juniper/jtimon/subscribe_cisco_iosxr.go:178:     transformPath           100.0%
github.com/Juniper/jtimon/subscribe_cisco_iosxr.go:197:     handleOnePath           0.0%
github.com/Juniper/jtimon/subscribe_cisco_iosxr.go:294:     subscribeXR         0.0%
github.com/Juniper/jtimon/subscribe_cisco_iosxr.go:331:     getKeysFromMessage      100.0%
github.com/Juniper/jtimon/subscribe_cisco_iosxr.go:344:     getContentFromMessage       100.0%
github.com/Juniper/jtimon/subscribe_cisco_iosxr.go:356:     getFieldStringValue     50.0%
github.com/Juniper/jtimon/subscribe_cisco_iosxr.go:379:     getFieldValueInterface      100.0%
github.com/Juniper/jtimon/subscribe_cisco_iosxr.go:405:     getKeyValue         100.0%
github.com/Juniper/jtimon/subscribe_cisco_iosxr.go:415:     multiLevelMsgTags       92.3%
github.com/Juniper/jtimon/subscribe_cisco_iosxr.go:471:     processMultiLevelMsg        100.0%
github.com/Juniper/jtimon/subscribe_cisco_iosxr.go:482:     processTopLevelMsg      100.0%
github.com/Juniper/jtimon/subscribe_cisco_iosxr.go:510:     String              100.0%
github.com/Juniper/jtimon/subscribe_cisco_iosxr.go:514:     walk                86.1%
github.com/Juniper/jtimon/subscribe_cisco_iosxr.go:584:     getParentPath           100.0%
github.com/Juniper/jtimon/subscribe_cisco_iosxr.go:596:     printFields         0.0%
github.com/Juniper/jtimon/subscribe_cisco_iosxr.go:617:     printOneField           0.0%
github.com/Juniper/jtimon/subscribe_gnmi.go:35:         publishToPrometheus     78.6%
github.com/Juniper/jtimon/subscribe_gnmi.go:105:        publishToInflux         52.4%
github.com/Juniper/jtimon/subscribe_gnmi.go:154:        gnmiParseHeader         69.2%
github.com/Juniper/jtimon/subscribe_gnmi.go:230:        gnmiParseNotification       68.2%
github.com/Juniper/jtimon/subscribe_gnmi.go:279:        gnmiHandleResponse      80.0%
github.com/Juniper/jtimon/subscribe_gnmi.go:407:        xPathsTognmiSubscription    0.0%
github.com/Juniper/jtimon/subscribe_gnmi.go:445:        subscribegNMI           0.0%
github.com/Juniper/jtimon/subscribe_juniper_junos.go:32:    handleOnePacket         27.9%
github.com/Juniper/jtimon/subscribe_juniper_junos.go:113:   subSendAndReceive       70.4%
github.com/Juniper/jtimon/subscribe_juniper_junos.go:224:   subscribeJunos          100.0%
github.com/Juniper/jtimon/subscribe_juniper_junos.go:241:   loginCheckJunos         18.2%
github.com/Juniper/jtimon/testutils.go:21:          testSetup           70.0%
github.com/Juniper/jtimon/testutils.go:38:          testTearDown            100.0%
github.com/Juniper/jtimon/testutils.go:55:          generateTestData        100.0%
github.com/Juniper/jtimon/testutils.go:66:          testDataPoints          83.3%
github.com/Juniper/jtimon/testutils.go:115:         compareString           100.0%
github.com/Juniper/jtimon/workers.go:61:            NewJWorkers         100.0%
github.com/Juniper/jtimon/workers.go:73:            EndWorkers          100.0%
github.com/Juniper/jtimon/workers.go:78:            SIGHUPWorkers           100.0%
github.com/Juniper/jtimon/workers.go:86:            StartWorkers            100.0%
github.com/Juniper/jtimon/workers.go:98:            Wait                100.0%
github.com/Juniper/jtimon/workers.go:103:           AddWorkers          100.0%
github.com/Juniper/jtimon/workers.go:112:           StartWorker         100.0%
github.com/Juniper/jtimon/workers.go:123:           AddWorker           100.0%
github.com/Juniper/jtimon/workers.go:130:           maxRunHandler           100.0%
github.com/Juniper/jtimon/workers.go:143:           handleConfigChanges     92.3%
github.com/Juniper/jtimon/workers.go:177:           signalHandler           73.3%
github.com/Juniper/jtimon/workers.go:216:           getDialOutRequest       0.0%
github.com/Juniper/jtimon/workers.go:249:           NewJWorker          54.7%
github.com/Juniper/jtimon/workers.go:381:           LocalAddr           0.0%
github.com/Juniper/jtimon/workers.go:384:           RemoteAddr          0.0%
github.com/Juniper/jtimon/workers.go:387:           SetDeadline         0.0%
github.com/Juniper/jtimon/workers.go:390:           SetReadDeadline         0.0%
github.com/Juniper/jtimon/workers.go:393:           SetWriteDeadline        0.0%
github.com/Juniper/jtimon/workers.go:401:           getBackOff          0.0%
github.com/Juniper/jtimon/workers.go:410:           workTunnel          0.0%
github.com/Juniper/jtimon/workers.go:651:           work                48.8%
total:                              (statements)            48.8%