├── .editorconfig
├── .gdnbaselines
├── .gitattributes
├── .github
├── CODEOWNERS
├── ISSUE_TEMPLATE
│ ├── bug_report.md
│ └── feature_request.md
├── dependabot.yml
└── workflows
│ ├── codeql.yml
│ ├── dotnet.yml
│ └── test.yml
├── .gitignore
├── .sscignore
├── CODEOWNERS
├── Industrial-IoT.sln
├── LICENSE
├── NOTICE
├── Nuget.Config
├── SECURITY.md
├── azure-pipelines.yml
├── cli.cmd
├── common.props
├── contributing.md
├── deploy.cmd
├── deploy.sh
├── deploy
├── docker
│ ├── build.cmd
│ ├── dapr
│ │ ├── pubsub.yaml
│ │ └── statestore.yaml
│ ├── docker-compose.yaml
│ ├── gcdump.ps1
│ ├── mosquitto
│ │ ├── mosquitto.conf
│ │ └── settings.json
│ ├── opentelemetry
│ │ ├── collector.yaml
│ │ ├── dashboards.yaml
│ │ ├── dashboards
│ │ │ └── opc-publisher.json
│ │ ├── datasources.yaml
│ │ ├── prometheus.yml
│ │ └── tempo.yaml
│ ├── publisher_secrets.txt
│ ├── readme.md
│ ├── with-dapr.yaml
│ ├── with-limits.yaml
│ ├── with-localimage.yaml
│ ├── with-localvolume.yaml
│ ├── with-monitor.yaml
│ ├── with-mosquitto.yaml
│ ├── with-opentelemetry.yaml
│ └── with-pcap-capture.yaml
├── iotedge
│ ├── .gitignore
│ ├── edgehubdev.cmd
│ ├── edgehubdev.json
│ ├── eflow-setup.json
│ ├── eflow-setup.ps1
│ └── readme.md
├── kubernetes
│ └── cluster-setup.ps1
├── scripts
│ ├── .gitignore
│ ├── TLSSettings.ps1
│ ├── aad-register.ps1
│ ├── default.yml
│ ├── deploy.ps1
│ ├── dps-enroll.ps1
│ ├── dsc-install.ps1
│ ├── dsc-install.zip
│ ├── edge-setup.ps1
│ ├── edge-setup.sh
│ ├── eflow-setup.ps1
│ ├── simulation.sh
│ └── testing.yml
└── templates
│ ├── azuredeploy.configuration.json
│ ├── azuredeploy.edge.json
│ ├── azuredeploy.json
│ ├── azuredeploy.platform.json
│ └── azuredeploy.simulation.json
├── docs
├── _config.yml
├── helm
│ ├── azure-industrial-iot-0.1.0.tgz
│ ├── azure-industrial-iot-0.2.0.tgz
│ ├── azure-industrial-iot-0.3.0.tgz
│ ├── azure-industrial-iot-0.3.1.tgz
│ ├── azure-industrial-iot-0.3.2.tgz
│ ├── azure-industrial-iot-0.4.0.tgz
│ ├── azure-industrial-iot-0.4.1.tgz
│ ├── azure-industrial-iot-0.4.2.tgz
│ ├── azure-industrial-iot-0.4.3.tgz
│ ├── azure-industrial-iot-0.4.4.tgz
│ ├── index.yaml
│ └── readme.md
├── media
│ ├── architecture.png
│ ├── icon.png
│ └── microsoft-symbol.png
├── opc-publisher
│ ├── api.md
│ ├── commandline.md
│ ├── definitions.md
│ ├── deployment.json
│ ├── directmethods.md
│ ├── features.md
│ ├── intfilesamples.md
│ ├── media
│ │ ├── 01.JPG
│ │ ├── 02.JPG
│ │ ├── 03.JPG
│ │ ├── 04.JPG
│ │ ├── 05.JPG
│ │ ├── 06.JPG
│ │ ├── 07.JPG
│ │ ├── 08.JPG
│ │ ├── 09.JPG
│ │ ├── 10.JPG
│ │ ├── 11.JPG
│ │ ├── 12.JPG
│ │ ├── 13.JPG
│ │ ├── 14.JPG
│ │ ├── 15.JPG
│ │ ├── image10.png
│ │ ├── image11.png
│ │ ├── image12.png
│ │ ├── image13.png
│ │ ├── image14.png
│ │ ├── image26.png
│ │ ├── image27.png
│ │ ├── image28.jpg
│ │ ├── image28.png
│ │ ├── image29.jpg
│ │ ├── image29.png
│ │ ├── image30.png
│ │ ├── image31.png
│ │ ├── image32.jpg
│ │ ├── image32.png
│ │ ├── image33.jpg
│ │ ├── image33.png
│ │ ├── image34.png
│ │ ├── image9.png
│ │ ├── keyset.png
│ │ ├── keyset1.png
│ │ ├── keyset2.png
│ │ ├── keyset3.png
│ │ └── metrics.jpeg
│ ├── messageformats.md
│ ├── metricsdashboard.zip
│ ├── migrationpath.md
│ ├── observability.md
│ ├── openapi.json
│ ├── publishednodes_2.5.json
│ ├── publishednodes_2.8.json
│ ├── readme.md
│ ├── security.md
│ ├── transports.md
│ └── troubleshooting.md
├── readme.md
├── release-announcement.md
└── web-api
│ ├── api.md
│ ├── definitions.md
│ ├── media
│ ├── 2-postmanenv.png
│ ├── 3-auth-edit.png
│ ├── 4-postmantoken.png
│ ├── OPCTwin.postman_collection.1.0.json
│ ├── deployment-succeeded.png
│ ├── deployment1.png
│ ├── ex3-twinbrowsebyid.png
│ ├── ex3-uriencode.png
│ ├── healthchecks.png
│ ├── image46.png
│ ├── image47.png
│ ├── image48.png
│ ├── image52.png
│ ├── image53.png
│ └── postman-edit-collection.png
│ ├── openapi.json
│ ├── readme.md
│ └── security.md
├── e2e-tests
├── .gitignore
├── Directory.Build.props
├── IIoTPlatform-E2E-Tests.sln
├── IIoTPlatform-E2E-Tests
│ ├── Config
│ │ ├── IContainerRegistryConfig.cs
│ │ ├── IDeviceConfig.cs
│ │ ├── IIoTEdgeConfig.cs
│ │ ├── IIoTHubConfig.cs
│ │ ├── IIoTPlatformConfig.cs
│ │ ├── IOpcPlcConfig.cs
│ │ └── ISshConfig.cs
│ ├── Discovery
│ │ ├── DiscoveryTestCollection.cs
│ │ ├── DiscoveryTestContext.cs
│ │ └── DiscoveryTestTheory.cs
│ ├── GlobalSuppressions.cs
│ ├── IIoTPlatform-E2E-Tests.csproj
│ ├── Orchestrated
│ │ ├── A_PublishSingleNodeOrchestratedTestTheory.cs
│ │ └── B_PublishMultipleNodesOrchestratedTestTheory.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── RegistryHelper.cs
│ ├── Standalone
│ │ ├── A_PublishSingleNodeStandaloneDirectMethodTestTheory.cs
│ │ ├── A_PublishSingleNodeStandaloneTestTheory.cs
│ │ ├── B_PublishMultipleNodesStandaloneDirectMethodTestTheory.cs
│ │ ├── B_PublishMultipleNodesStandaloneTestTheory.cs
│ │ ├── C_PublishMultipleEndpointsStandaloneDirectMethodTestTheory.cs
│ │ └── DirectMethodTestBase.cs
│ ├── TestConstants.cs
│ ├── TestEventProcessor
│ │ ├── Checkers
│ │ │ ├── IncrementalIntValueChecker.cs
│ │ │ ├── IncrementalIntValueCheckerResult.cs
│ │ │ ├── MessageDeliveryDelayChecker.cs
│ │ │ ├── MessageProcessingDelayChecker.cs
│ │ │ ├── MissingTimestampsChecker.cs
│ │ │ ├── MissingValueChangesChecker.cs
│ │ │ ├── SequenceNumberChecker.cs
│ │ │ ├── SequenceNumberCheckerResult.cs
│ │ │ └── ValueChangeCounterPerNodeId.cs
│ │ ├── MessageSchemaTypes.cs
│ │ ├── TelemetryValidator.cs
│ │ ├── ValidationResult.cs
│ │ └── ValidatorConfiguration.cs
│ ├── TestExtensions
│ │ ├── IIoTMultipleNodesTestCollection.cs
│ │ ├── IIoTMultipleNodesTestContext.cs
│ │ ├── IIoTPlatformTestCollection.cs
│ │ ├── IIoTPlatformTestContext.cs
│ │ ├── IIoTStandaloneDirectMethodsTestCollection.cs
│ │ ├── IIoTStandaloneTestCollection.cs
│ │ ├── PriorityOrderAttribute.cs
│ │ └── TestCaseOrderer.cs
│ ├── TestHelper.Discovery.cs
│ ├── TestHelper.Publisher.cs
│ ├── TestHelper.Registry.cs
│ ├── TestHelper.Twin.cs
│ ├── TestHelper.cs
│ ├── Twin
│ │ ├── TwinBrowseTestTheory.cs
│ │ ├── TwinCallTestTheory.cs
│ │ ├── TwinReadNodeValueTestTheory.cs
│ │ ├── TwinReadTestTheory.cs
│ │ ├── TwinTestCollection.cs
│ │ ├── TwinTestContext.cs
│ │ ├── TwinWriteNodeValueTestTheory.cs
│ │ └── TwinWriteTestTheory.cs
│ ├── deploy
│ │ ├── DeploymentConfiguration.cs
│ │ ├── IIoTHubEdgeDeployment.cs
│ │ ├── IoTHubEdgeBaseDeployment.cs
│ │ ├── IoTHubPublisherDeployment.cs
│ │ └── ModuleDeploymentConfiguration.cs
│ └── xunit.runner.json
├── OpcPublisher-E2E-Tests
│ ├── Config
│ │ ├── IContainerRegistryConfig.cs
│ │ ├── IDeviceConfig.cs
│ │ ├── IIoTEdgeConfig.cs
│ │ ├── IIoTHubConfig.cs
│ │ ├── IOpcPlcConfig.cs
│ │ └── ISshConfig.cs
│ ├── GlobalSuppressions.cs
│ ├── MessagingMode.cs
│ ├── OpcPublisher-AE-E2E-Tests.csproj
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── PublishedNodesConfigurations.cs
│ ├── RegistryHelper.cs
│ ├── Standalone
│ │ ├── C_EventNamespaceTestTheory.cs
│ │ ├── C_EventsStressTestTheory.cs
│ │ ├── C_PendingConditionsTestTheory.cs
│ │ ├── C_PublishConditionsTestTheory.cs
│ │ ├── C_WhereClauseTestTheory.cs
│ │ ├── D_AlarmDirectMethodTestTheory.cs
│ │ ├── D_EventDirectMethodTestTheory.cs
│ │ └── DynamicAciTestBase.cs
│ ├── TestConstants.cs
│ ├── TestExtensions
│ │ ├── IIoTPlatformTestContext.cs
│ │ ├── IIoTStandaloneTestContext.cs
│ │ ├── PriorityOrderAttribute.cs
│ │ └── TestCaseOrderer.cs
│ ├── TestHelper.cs
│ ├── TestModels
│ │ ├── BaseEventTypePayload.cs
│ │ ├── ConditionTypePayload.cs
│ │ ├── DataValueObject.cs
│ │ ├── EventData.cs
│ │ ├── PendingConditionEventData.cs
│ │ ├── SimpleEventsStep.cs
│ │ ├── SystemCycleStatusEventTypePayload.cs
│ │ └── SystemEventTypePayload.cs
│ ├── deploy
│ │ ├── DeploymentConfiguration.cs
│ │ ├── IIoTHubEdgeDeployment.cs
│ │ ├── IoTHubEdgeBaseDeployment.cs
│ │ ├── IoTHubPublisherDeployment.cs
│ │ └── ModuleDeploymentConfiguration.cs
│ ├── opc-plc-files
│ │ └── sc001.json
│ └── xunit.runner.json
└── readme.md
├── readme.md
├── samples
├── .gitignore
├── Http
│ ├── BrowseAll
│ │ ├── BrowseAll.cs
│ │ └── BrowseAll.csproj
│ ├── GetConfiguration
│ │ ├── GetConfiguration.cs
│ │ └── GetConfiguration.csproj
│ ├── GetDiagnostics
│ │ ├── GetDiagnostics.cs
│ │ └── GetDiagnostics.csproj
│ ├── HttpSamples.sln
│ ├── Parameters.cs
│ ├── ReadCurrentTime
│ │ ├── ReadCurrentTime.cs
│ │ └── ReadCurrentTime.csproj
│ ├── SetConfiguration
│ │ ├── SetConfiguration.cs
│ │ └── SetConfiguration.csproj
│ ├── WriteReadbackValue
│ │ ├── WriteReadbackValue.cs
│ │ └── WriteReadbackValue.csproj
│ └── readme.md
├── IoTHub
│ ├── ApproveRejected
│ │ ├── ApproveRejected.cs
│ │ └── ApproveRejected.csproj
│ ├── BrowseCertificates
│ │ ├── BrowseCertificates.cs
│ │ └── BrowseCertificates.csproj
│ ├── GetCertificate
│ │ ├── GetApplicationCert.cs
│ │ └── GetApplicationCert.csproj
│ ├── GetConfiguration
│ │ ├── GetConfiguration.cs
│ │ └── GetConfiguration.csproj
│ ├── IoTHubSamples.sln
│ ├── ManageWriter
│ │ ├── ManageWriter.cs
│ │ └── ManageWriter.csproj
│ ├── MonitorMessages
│ │ ├── MonitorMessages.cs
│ │ └── MonitorMessages.csproj
│ ├── Parameters.cs
│ ├── ReadCurrentTime
│ │ ├── ReadCurrentTime.cs
│ │ └── ReadCurrentTime.csproj
│ ├── ResetClients
│ │ ├── GetAndResetConnections.cs
│ │ └── GetAndResetConnections.csproj
│ ├── WriteReadbackValue
│ │ ├── WriteReadbackValue.cs
│ │ └── WriteReadbackValue.csproj
│ └── readme.md
├── Mqtt
│ ├── GetConfiguration
│ │ ├── GetConfiguration.cs
│ │ └── GetConfiguration.csproj
│ ├── ManageWriter
│ │ ├── ManageWriter.cs
│ │ └── ManageWriter.csproj
│ ├── MonitorMessages
│ │ ├── MonitorMessages.cs
│ │ └── MonitorMessages.csproj
│ ├── MqttSamples.sln
│ ├── ReadAttributes
│ │ ├── ReadAttributes.cs
│ │ └── ReadAttributes.csproj
│ ├── ReadCurrentTime
│ │ ├── ReadCurrentTime.cs
│ │ └── ReadCurrentTime.csproj
│ ├── WriteReadbackValue
│ │ ├── WriteReadbackValue.cs
│ │ └── WriteReadbackValue.csproj
│ └── readme.md
└── Netcap
│ ├── Directory.Build.props
│ ├── Netcap.sln
│ ├── build.sh
│ ├── readme.md
│ └── src
│ ├── .dockerignore
│ ├── Dockerfile
│ ├── Extensions.cs
│ ├── Gateway.cs
│ ├── Netcap.cs
│ ├── Netcap.csproj
│ ├── Pcap.cs
│ ├── Program.cs
│ ├── Publisher.cs
│ └── Storage.cs
├── src
├── .gitignore
├── Azure.IIoT.OpcUa.Publisher.Models
│ ├── src
│ │ ├── AdditionalData.cs
│ │ ├── AggregateConfigurationModel.cs
│ │ ├── AggregateFilterModel.cs
│ │ ├── ApplicationEventModel.cs
│ │ ├── ApplicationEventType.cs
│ │ ├── ApplicationInfoListModel.cs
│ │ ├── ApplicationInfoModel.cs
│ │ ├── ApplicationRegistrationModel.cs
│ │ ├── ApplicationRegistrationQueryModel.cs
│ │ ├── ApplicationRegistrationRequestModel.cs
│ │ ├── ApplicationRegistrationResponseModel.cs
│ │ ├── ApplicationRegistrationUpdateModel.cs
│ │ ├── ApplicationSiteListModel.cs
│ │ ├── ApplicationType.cs
│ │ ├── AttributeReadRequestModel.cs
│ │ ├── AttributeReadResponseModel.cs
│ │ ├── AttributeWriteRequestModel.cs
│ │ ├── AttributeWriteResponseModel.cs
│ │ ├── AuthenticationMethodModel.cs
│ │ ├── Azure.IIoT.OpcUa.Publisher.Models.csproj
│ │ ├── BrowseDirection.cs
│ │ ├── BrowseFirstRequestModel.cs
│ │ ├── BrowseFirstResponseModel.cs
│ │ ├── BrowseNextRequestModel.cs
│ │ ├── BrowseNextResponseModel.cs
│ │ ├── BrowsePathRequestModel.cs
│ │ ├── BrowsePathResponseModel.cs
│ │ ├── BrowseStreamChunkModel.cs
│ │ ├── BrowseStreamRequestModel.cs
│ │ ├── BrowseViewModel.cs
│ │ ├── CertificateStoreName.cs
│ │ ├── ChannelDiagnosticModel.cs
│ │ ├── ChannelKeyModel.cs
│ │ ├── ConditionHandlingOptionsModel.cs
│ │ ├── ConnectRequestModel.cs
│ │ ├── ConnectResponseModel.cs
│ │ ├── ConnectionDiagnosticsModel.cs
│ │ ├── ConnectionModel.cs
│ │ ├── ConnectionOptions.cs
│ │ ├── Constants.cs
│ │ ├── ContentFilterElementModel.cs
│ │ ├── ContentFilterModel.cs
│ │ ├── CredentialModel.cs
│ │ ├── CredentialType.cs
│ │ ├── DataChangeFilterModel.cs
│ │ ├── DataChangeTriggerType.cs
│ │ ├── DataLocation.cs
│ │ ├── DataSetFieldContentFlags.cs
│ │ ├── DataSetMessageContentFlags.cs
│ │ ├── DataSetMetaDataModel.cs
│ │ ├── DataSetOrderingType.cs
│ │ ├── DataSetRoutingMode.cs
│ │ ├── DataSetWriterMessageSettingsModel.cs
│ │ ├── DataSetWriterModel.cs
│ │ ├── DataTypeMetadataModel.cs
│ │ ├── DeadbandType.cs
│ │ ├── DeleteEventsDetailsModel.cs
│ │ ├── DeleteValuesAtTimesDetailsModel.cs
│ │ ├── DeleteValuesDetailsModel.cs
│ │ ├── DiagnosticsLevel.cs
│ │ ├── DiagnosticsModel.cs
│ │ ├── DisconnectRequestModel.cs
│ │ ├── DiscovererEventModel.cs
│ │ ├── DiscovererEventType.cs
│ │ ├── DiscovererListModel.cs
│ │ ├── DiscovererModel.cs
│ │ ├── DiscovererQueryModel.cs
│ │ ├── DiscovererUpdateModel.cs
│ │ ├── DiscoveryCancelRequestModel.cs
│ │ ├── DiscoveryConfigModel.cs
│ │ ├── DiscoveryEventModel.cs
│ │ ├── DiscoveryMode.cs
│ │ ├── DiscoveryProgressModel.cs
│ │ ├── DiscoveryProgressType.cs
│ │ ├── DiscoveryRequestModel.cs
│ │ ├── DiscoveryResultModel.cs
│ │ ├── EndpointConnectivityState.cs
│ │ ├── EndpointEventModel.cs
│ │ ├── EndpointEventType.cs
│ │ ├── EndpointInfoListModel.cs
│ │ ├── EndpointInfoModel.cs
│ │ ├── EndpointModel.cs
│ │ ├── EndpointRegistrationModel.cs
│ │ ├── EndpointRegistrationQueryModel.cs
│ │ ├── EnumDescriptionModel.cs
│ │ ├── EnumFieldDescriptionModel.cs
│ │ ├── EventFilterModel.cs
│ │ ├── EventTargets.cs
│ │ ├── ExceptionDeviationType.cs
│ │ ├── ExtensionFieldModel.cs
│ │ ├── FileInfoModel.cs
│ │ ├── FileOpenWriteOptionsModel.cs
│ │ ├── FileSystemObjectModel.cs
│ │ ├── FileWriteMode.cs
│ │ ├── FilterOperandModel.cs
│ │ ├── FilterOperatorType.cs
│ │ ├── GatewayEventModel.cs
│ │ ├── GatewayEventType.cs
│ │ ├── GatewayInfoModel.cs
│ │ ├── GatewayListModel.cs
│ │ ├── GatewayModel.cs
│ │ ├── GatewayModulesModel.cs
│ │ ├── GatewayQueryModel.cs
│ │ ├── GatewayUpdateModel.cs
│ │ ├── GetConfiguredEndpointsRequestModel.cs
│ │ ├── GetConfiguredEndpointsResponseModel.cs
│ │ ├── GetConfiguredNodesOnEndpointResponseModel.cs
│ │ ├── HeartbeatBehavior.cs
│ │ ├── HistoricEventModel.cs
│ │ ├── HistoricValueModel.cs
│ │ ├── HistoryConfigurationModel.cs
│ │ ├── HistoryConfigurationRequestModel.cs
│ │ ├── HistoryConfigurationResponseModel.cs
│ │ ├── HistoryReadNextRequestModel.cs
│ │ ├── HistoryReadNextResponseModel.cs
│ │ ├── HistoryReadRequestModel.cs
│ │ ├── HistoryReadResponseModel.cs
│ │ ├── HistoryServerCapabilitiesModel.cs
│ │ ├── HistoryUpdateOperation.cs
│ │ ├── HistoryUpdateRequestModel.cs
│ │ ├── HistoryUpdateResponseModel.cs
│ │ ├── InstanceDeclarationModel.cs
│ │ ├── LocalizedTextModel.cs
│ │ ├── MessageEncoding.cs
│ │ ├── MessageTimestamp.cs
│ │ ├── MessagingMode.cs
│ │ ├── MethodCallArgumentModel.cs
│ │ ├── MethodCallRequestModel.cs
│ │ ├── MethodCallResponseModel.cs
│ │ ├── MethodMetadataArgumentModel.cs
│ │ ├── MethodMetadataModel.cs
│ │ ├── MethodMetadataRequestModel.cs
│ │ ├── MethodMetadataResponseModel.cs
│ │ ├── ModelChangeHandlingOptionsModel.cs
│ │ ├── ModificationInfoModel.cs
│ │ ├── MonitoredItemMessageModel.cs
│ │ ├── MonitoredItemWatchdogCondition.cs
│ │ ├── MonitoringItemMode.cs
│ │ ├── NamespaceFormat.cs
│ │ ├── NetworkMessageContentFlags.cs
│ │ ├── NodeAccessLevel.cs
│ │ ├── NodeAccessRestrictions.cs
│ │ ├── NodeAttribute.cs
│ │ ├── NodeClass.cs
│ │ ├── NodeEventNotifier.cs
│ │ ├── NodeIdModel.cs
│ │ ├── NodeMetadataRequestModel.cs
│ │ ├── NodeMetadataResponseModel.cs
│ │ ├── NodeModel.cs
│ │ ├── NodePathTargetModel.cs
│ │ ├── NodeReferenceModel.cs
│ │ ├── NodeType.cs
│ │ ├── NodeValueRank.cs
│ │ ├── OpcAuthenticationMode.cs
│ │ ├── OpcNodeModel.cs
│ │ ├── OperationContextModel.cs
│ │ ├── OperationLimitsModel.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── PublishBulkRequestModel.cs
│ │ ├── PublishBulkResponseModel.cs
│ │ ├── PublishDiagnosticInfoModel.cs
│ │ ├── PublishStartRequestModel.cs
│ │ ├── PublishStartResponseModel.cs
│ │ ├── PublishStopRequestModel.cs
│ │ ├── PublishStopResponseModel.cs
│ │ ├── PublishedDataItemsModel.cs
│ │ ├── PublishedDataSetEventModel.cs
│ │ ├── PublishedDataSetMessageSchemaModel.cs
│ │ ├── PublishedDataSetMetaDataModel.cs
│ │ ├── PublishedDataSetModel.cs
│ │ ├── PublishedDataSetSettingsModel.cs
│ │ ├── PublishedDataSetSourceModel.cs
│ │ ├── PublishedDataSetTriggerModel.cs
│ │ ├── PublishedDataSetVariableModel.cs
│ │ ├── PublishedEventItemsModel.cs
│ │ ├── PublishedFieldMetaDataModel.cs
│ │ ├── PublishedItemListRequestModel.cs
│ │ ├── PublishedItemListResponseModel.cs
│ │ ├── PublishedItemModel.cs
│ │ ├── PublishedNetworkMessageSchemaModel.cs
│ │ ├── PublishedNodeCreateAssetRequestModel.cs
│ │ ├── PublishedNodeDeleteAssetRequestModel.cs
│ │ ├── PublishedNodeExpansionModel.cs
│ │ ├── PublishedNodesEntryModel.cs
│ │ ├── PublishedNodesEntryRequestModel.cs
│ │ ├── PublishedNodesResponseModel.cs
│ │ ├── PublisherDiagnosticTargetType.cs
│ │ ├── PublisherEventModel.cs
│ │ ├── PublisherEventType.cs
│ │ ├── PublisherListModel.cs
│ │ ├── PublisherModel.cs
│ │ ├── PublisherQueryModel.cs
│ │ ├── PublisherUpdateModel.cs
│ │ ├── PublishingQueueSettingsModel.cs
│ │ ├── QueryCompilationRequestModel.cs
│ │ ├── QueryCompilationResponseModel.cs
│ │ ├── QueryType.cs
│ │ ├── ReadEventsDetailsModel.cs
│ │ ├── ReadModifiedValuesDetailsModel.cs
│ │ ├── ReadProcessedValuesDetailsModel.cs
│ │ ├── ReadRequestModel.cs
│ │ ├── ReadResponseModel.cs
│ │ ├── ReadValuesAtTimesDetailsModel.cs
│ │ ├── ReadValuesDetailsModel.cs
│ │ ├── RelativePathElementModel.cs
│ │ ├── RequestEnvelope.cs
│ │ ├── RequestHeaderModel.cs
│ │ ├── RolePermissionModel.cs
│ │ ├── RolePermissions.cs
│ │ ├── RuntimeStateEventModel.cs
│ │ ├── RuntimeStateEventType.cs
│ │ ├── SecurityMode.cs
│ │ ├── ServerCapabilitiesModel.cs
│ │ ├── ServerEndpointQueryModel.cs
│ │ ├── ServerRegistrationRequestModel.cs
│ │ ├── ServiceCounterModel.cs
│ │ ├── ServiceResponse.cs
│ │ ├── ServiceResultModel.cs
│ │ ├── SessionDiagnosticsModel.cs
│ │ ├── SetConfiguredEndpointsRequestModel.cs
│ │ ├── SimpleAttributeOperandModel.cs
│ │ ├── SimpleTypeDescriptionModel.cs
│ │ ├── StructureDescriptionModel.cs
│ │ ├── StructureFieldDescriptionModel.cs
│ │ ├── StructureType.cs
│ │ ├── SubscriptionDiagnosticsModel.cs
│ │ ├── SubscriptionWatchdogBehavior.cs
│ │ ├── SupervisorEventModel.cs
│ │ ├── SupervisorEventType.cs
│ │ ├── SupervisorListModel.cs
│ │ ├── SupervisorModel.cs
│ │ ├── SupervisorQueryModel.cs
│ │ ├── SupervisorUpdateModel.cs
│ │ ├── TestConnectionRequestModel.cs
│ │ ├── TestConnectionResponseModel.cs
│ │ ├── TimestampsToReturn.cs
│ │ ├── TypeDefinitionModel.cs
│ │ ├── UpdateEventsDetailsModel.cs
│ │ ├── UpdateValuesDetailsModel.cs
│ │ ├── UserIdentityModel.cs
│ │ ├── ValueReadRequestModel.cs
│ │ ├── ValueReadResponseModel.cs
│ │ ├── ValueWriteRequestModel.cs
│ │ ├── ValueWriteResponseModel.cs
│ │ ├── VariableMetadataModel.cs
│ │ ├── WriteRequestModel.cs
│ │ ├── WriteResponseModel.cs
│ │ ├── WriterGroupDiagnosticModel.cs
│ │ ├── WriterGroupMessageSettingsModel.cs
│ │ ├── WriterGroupModel.cs
│ │ ├── WriterGroupTransport.cs
│ │ ├── X509CertificateChainModel.cs
│ │ ├── X509CertificateModel.cs
│ │ └── X509ChainStatus.cs
│ └── tests
│ │ ├── Azure.IIoT.OpcUa.Publisher.Models.Tests.csproj
│ │ ├── Fixtures
│ │ └── TypeFixture.cs
│ │ ├── GlobalSuppressions.cs
│ │ ├── JsonSerializerTests.cs
│ │ ├── MsgPackSerializerTests.cs
│ │ ├── NewtonsoftSerializerTests.cs
│ │ └── PublishNodesEndpointApiModelTests.cs
├── Azure.IIoT.OpcUa.Publisher.Module
│ ├── cli
│ │ ├── Azure.IIoT.OpcUa.Publisher.Module.Cli.csproj
│ │ ├── Initfiles
│ │ │ ├── MachineTools.init
│ │ │ ├── Machinery.init
│ │ │ ├── Objects.init
│ │ │ └── Variables.init
│ │ ├── Profiles
│ │ │ ├── BrowsePath.json
│ │ │ ├── CyclicReads.json
│ │ │ ├── DataItems.json
│ │ │ ├── DataSetTopics.json
│ │ │ ├── Deadband.json
│ │ │ ├── Empty.json
│ │ │ ├── Extremes.json
│ │ │ ├── FastTime.json
│ │ │ ├── FixedAndData.json
│ │ │ ├── Fixedvalue.json
│ │ │ ├── Heartbeat.json
│ │ │ ├── Heartbeat2.json
│ │ │ ├── Heartbeat3.json
│ │ │ ├── Isa95Jobs.json
│ │ │ ├── KeepAlive.json
│ │ │ ├── KeyFrames.json
│ │ │ ├── ModelChanges.json
│ │ │ ├── MultiDataSetWriter.json
│ │ │ ├── MultiEndpoint.json
│ │ │ ├── MultiWriterGroup.json
│ │ │ ├── NoNodes.json
│ │ │ ├── PendingAlarms.json
│ │ │ ├── PlcSimulation.json
│ │ │ ├── RegisteredRead.json
│ │ │ ├── SimpleEvents.json
│ │ │ ├── SlowSample.json
│ │ │ ├── SubscribeErrors.json
│ │ │ ├── TopicPerNode.json
│ │ │ └── UnifiedNamespace.json
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ └── publishednodes.json
│ ├── src
│ │ ├── Azure.IIoT.OpcUa.Publisher.Module.csproj
│ │ ├── Controllers
│ │ │ ├── CertificatesController.cs
│ │ │ ├── ConfigurationController.cs
│ │ │ ├── DiagnosticsController.cs
│ │ │ ├── DiscoveryController.cs
│ │ │ ├── FileSystemController.cs
│ │ │ ├── GeneralController.cs
│ │ │ ├── HistoryController.cs
│ │ │ ├── LegacyController.cs
│ │ │ ├── PublisherController.cs
│ │ │ └── WriterController.cs
│ │ ├── Filters
│ │ │ ├── ControllerExceptionFilterAttribute.cs
│ │ │ └── RouterExceptionFilterAttribute.cs
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── Runtime
│ │ │ ├── CommandLine.cs
│ │ │ ├── Configuration.cs
│ │ │ ├── Security.cs
│ │ │ └── Syslog.cs
│ │ └── Startup.cs
│ └── tests
│ │ ├── Azure.IIoT.OpcUa.Publisher.Module.Tests.csproj
│ │ ├── Clients
│ │ ├── ConfigurationServicesRestClient.cs
│ │ ├── FileSystemServicesRestClient.cs
│ │ ├── HistoryServicesRestClient.cs
│ │ └── NodeServicesRestClient.cs
│ │ ├── Controller
│ │ ├── Alarms
│ │ │ ├── Json
│ │ │ │ └── NodeServicesTests.cs
│ │ │ └── MsgPack
│ │ │ │ └── NodeServicesTests.cs
│ │ ├── Asset
│ │ │ ├── Json
│ │ │ │ ├── ConfigurationTest1.cs
│ │ │ │ ├── ConfigurationTest2.cs
│ │ │ │ ├── ConfigurationTest3.cs
│ │ │ │ ├── ConfigurationTest4.cs
│ │ │ │ ├── WriteCollection1.cs
│ │ │ │ ├── WriteCollection2.cs
│ │ │ │ ├── WriteCollection3.cs
│ │ │ │ └── WriteCollection4.cs
│ │ │ └── MsgPack
│ │ │ │ ├── ConfigurationTest1.cs
│ │ │ │ ├── ConfigurationTest2.cs
│ │ │ │ ├── ConfigurationTest3.cs
│ │ │ │ ├── ConfigurationTest4.cs
│ │ │ │ ├── WriteCollection1.cs
│ │ │ │ ├── WriteCollection2.cs
│ │ │ │ ├── WriteCollection3.cs
│ │ │ │ └── WriteCollection4.cs
│ │ ├── DeterministicAlarms
│ │ │ ├── Json
│ │ │ │ ├── NodeServicesTests1.cs
│ │ │ │ └── NodeServicesTests2.cs
│ │ │ └── MsgPack
│ │ │ │ ├── NodeServicesTests1.cs
│ │ │ │ └── NodeServicesTests2.cs
│ │ ├── DmApiPublisherControllerTests.cs
│ │ ├── FileSystem
│ │ │ ├── Json
│ │ │ │ ├── BrowseTests.cs
│ │ │ │ ├── FileCollection.cs
│ │ │ │ ├── OperationsTests.cs
│ │ │ │ ├── ReadTests.cs
│ │ │ │ └── WriteTests.cs
│ │ │ └── MsgPack
│ │ │ │ ├── BrowseTests.cs
│ │ │ │ ├── FileCollection.cs
│ │ │ │ ├── OperationsTests.cs
│ │ │ │ ├── ReadTests.cs
│ │ │ │ └── WriteTests.cs
│ │ ├── HistoricalAccess
│ │ │ ├── Json
│ │ │ │ ├── NodeServicesTests.cs
│ │ │ │ ├── ReadAtTimesTests.cs
│ │ │ │ ├── ReadCollection.cs
│ │ │ │ ├── ReadModifiedTests.cs
│ │ │ │ ├── ReadProcessedTests.cs
│ │ │ │ ├── ReadValuesTests.cs
│ │ │ │ └── UpdateValuesTests.cs
│ │ │ └── MsgPack
│ │ │ │ ├── NodeServicesTests.cs
│ │ │ │ ├── ReadAtTimesTests.cs
│ │ │ │ ├── ReadCollection.cs
│ │ │ │ ├── ReadModifiedTests.cs
│ │ │ │ ├── ReadProcessedTests.cs
│ │ │ │ ├── ReadValuesTests.cs
│ │ │ │ └── UpdateValuesTests.cs
│ │ ├── HistoricalEvents
│ │ │ ├── Json
│ │ │ │ ├── NodeServicesTests.cs
│ │ │ │ └── ReadCollection.cs
│ │ │ └── MsgPack
│ │ │ │ ├── NodeServicesTests.cs
│ │ │ │ └── ReadCollection.cs
│ │ ├── Plc
│ │ │ ├── Json
│ │ │ │ ├── NodeServicesTests1.cs
│ │ │ │ └── NodeServicesTests2.cs
│ │ │ └── MsgPack
│ │ │ │ ├── NodeServicesTests1.cs
│ │ │ │ └── NodeServicesTests2.cs
│ │ ├── SimpleEvents
│ │ │ ├── Json
│ │ │ │ └── NodeServicesTests.cs
│ │ │ └── MsgPack
│ │ │ │ └── NodeServicesTests.cs
│ │ └── TestData
│ │ │ ├── Json
│ │ │ ├── BrowsePathTests.cs
│ │ │ ├── BrowseStreamTests.cs
│ │ │ ├── BrowseTests.cs
│ │ │ ├── CallArrayTests.cs
│ │ │ ├── CallScalarTests.cs
│ │ │ ├── ExpandTests1.cs
│ │ │ ├── MetadataArrayTests.cs
│ │ │ ├── MetadataScalarTests.cs
│ │ │ ├── MetadataTests.cs
│ │ │ ├── ReadCollection.cs
│ │ │ ├── ValueReadArrayTests.cs
│ │ │ ├── ValueReadScalarTests.cs
│ │ │ ├── ValueWriteArrayTests.cs
│ │ │ ├── ValueWriteScalarTests.cs
│ │ │ └── WriteCollection.cs
│ │ │ └── MsgPack
│ │ │ ├── BrowsePathTests.cs
│ │ │ ├── BrowseStreamTests.cs
│ │ │ ├── BrowseTests.cs
│ │ │ ├── CallArrayTests.cs
│ │ │ ├── CallScalarTests.cs
│ │ │ ├── ExpandTests1.cs
│ │ │ ├── MetadataArrayTests.cs
│ │ │ ├── MetadataScalarTests.cs
│ │ │ ├── MetadataTests.cs
│ │ │ ├── ReadCollection.cs
│ │ │ ├── ValueReadArrayTests.cs
│ │ │ ├── ValueReadScalarTests.cs
│ │ │ ├── ValueWriteArrayTests.cs
│ │ │ ├── ValueWriteScalarTests.cs
│ │ │ └── WriteCollection.cs
│ │ ├── Fixtures
│ │ ├── PublisherIntegrationTestBase.cs
│ │ ├── PublisherModule.cs
│ │ ├── PublisherModuleFixture.cs
│ │ ├── ReferenceServerReadCollection.cs
│ │ ├── TempFileProviderBase.cs
│ │ ├── TestSerializerType.cs
│ │ └── TwinIntegrationTestBase.cs
│ │ ├── GlobalSuppressions.cs
│ │ ├── Logging.cs
│ │ ├── Mqtt
│ │ ├── Alarms
│ │ │ └── NodeServicesTests.cs
│ │ ├── DeterministicAlarms
│ │ │ ├── NodeServicesTests1.cs
│ │ │ └── NodeServicesTests2.cs
│ │ ├── HistoricalAccess
│ │ │ ├── NodeServicesTests.cs
│ │ │ ├── ReadAtTimesTests.cs
│ │ │ ├── ReadCollection.cs
│ │ │ ├── ReadModifiedTests.cs
│ │ │ ├── ReadProcessedTests.cs
│ │ │ ├── ReadValuesTests.cs
│ │ │ └── UpdateValuesTests.cs
│ │ ├── HistoricalEvents
│ │ │ ├── NodeServicesTests.cs
│ │ │ └── ReadCollection.cs
│ │ ├── Plc
│ │ │ ├── NodeServicesTests1.cs
│ │ │ └── NodeServicesTests2.cs
│ │ ├── ReferenceServer
│ │ │ ├── MqttConfigurationIntegrationTests.cs
│ │ │ ├── MqttPubSubIntegrationTests.cs
│ │ │ └── MqttUnifiedNamespaceTests.cs
│ │ ├── SimpleEvents
│ │ │ └── NodeServicesTests.cs
│ │ └── TestData
│ │ │ ├── BrowsePathTests.cs
│ │ │ ├── BrowseStreamTests.cs
│ │ │ ├── BrowseTests.cs
│ │ │ ├── CallArrayTests.cs
│ │ │ ├── CallScalarTests.cs
│ │ │ ├── MetadataArrayTests.cs
│ │ │ ├── MetadataScalarTests.cs
│ │ │ ├── MetadataTests.cs
│ │ │ ├── ReadCollection.cs
│ │ │ ├── ValueReadArrayTests.cs
│ │ │ ├── ValueReadScalarTests.cs
│ │ │ ├── ValueWriteArrayTests.cs
│ │ │ ├── ValueWriteScalarTests.cs
│ │ │ └── WriteCollection.cs
│ │ ├── Properties
│ │ └── AssemblyInfo.cs
│ │ ├── Resources
│ │ ├── CyclicRead.json
│ │ ├── DataItems.json
│ │ ├── DataItems1.json
│ │ ├── DataItems2.json
│ │ ├── Deadband.json
│ │ ├── DmApiPayloadCollection.json
│ │ ├── DmApiPayloadTwoEndpoints.json
│ │ ├── ExtensionFields.json
│ │ ├── Fixedvalue.json
│ │ ├── Heartbeat.json
│ │ ├── Heartbeat2.json
│ │ ├── HeartbeatErrors.json
│ │ ├── Isa95Jobs.json
│ │ ├── KeepAlive.json
│ │ ├── KeyFrames.json
│ │ ├── ModelChanges.json
│ │ ├── PendingAlarms.json
│ │ ├── RegisteredRead.json
│ │ ├── SimpleEvents.json
│ │ ├── SimpleEvents2.json
│ │ ├── UnifiedNamespace.json
│ │ └── empty_pn.json
│ │ ├── Runtime
│ │ ├── CommandLineTest.cs
│ │ ├── PublisherCliTests.cs
│ │ └── PublisherControllerTests.cs
│ │ └── Sdk
│ │ ├── Alarms
│ │ └── NodeServicesTests.cs
│ │ ├── DeterministicAlarms
│ │ ├── NodeServicesTests1.cs
│ │ └── NodeServicesTests2.cs
│ │ ├── HistoricalAccess
│ │ ├── NodeServicesTests.cs
│ │ ├── ReadAtTimesTests.cs
│ │ ├── ReadCollection.cs
│ │ ├── ReadModifiedTests.cs
│ │ ├── ReadProcessedTests.cs
│ │ ├── ReadValuesTests.cs
│ │ └── UpdateValuesTests.cs
│ │ ├── HistoricalEvents
│ │ ├── NodeServicesTests.cs
│ │ └── ReadCollection.cs
│ │ ├── Isa95Jobs
│ │ └── BasicPubSubIntegrationTests.cs
│ │ ├── Plc
│ │ ├── NodeServicesTests1.cs
│ │ └── NodeServicesTests2.cs
│ │ ├── ReferenceServer
│ │ ├── AdvancedPubSubIntegrationTests.cs
│ │ ├── BasicPubSubIntegrationTests.cs
│ │ ├── BasicSamplesIntegrationTests.cs
│ │ └── ReverseConnectIntegrationTests.cs
│ │ ├── SimpleEvents
│ │ └── NodeServicesTests.cs
│ │ └── TestData
│ │ ├── BrowsePathTests.cs
│ │ ├── BrowseStreamTests.cs
│ │ ├── BrowseTests.cs
│ │ ├── CallArrayTests.cs
│ │ ├── CallScalarTests.cs
│ │ ├── MetadataArrayTests.cs
│ │ ├── MetadataScalarTests.cs
│ │ ├── MetadataTests.cs
│ │ ├── ReadCollection.cs
│ │ ├── ValueReadArrayTests.cs
│ │ ├── ValueReadScalarTests.cs
│ │ ├── ValueWriteArrayTests.cs
│ │ ├── ValueWriteScalarTests.cs
│ │ └── WriteCollection.cs
├── Azure.IIoT.OpcUa.Publisher.Sdk
│ └── src
│ │ ├── Azure.IIoT.OpcUa.Publisher.Sdk.csproj
│ │ ├── Clients
│ │ ├── DiscoveryApiClient.cs
│ │ ├── Extensions.cs
│ │ ├── HistoryApiClient.cs
│ │ ├── PublisherApiClient.cs
│ │ └── TwinApiClient.cs
│ │ ├── IDiscoveryApi.cs
│ │ ├── IHistoryApi.cs
│ │ ├── IPublisherApi.cs
│ │ ├── ITwinApi.cs
│ │ ├── Properties
│ │ └── AssemblyInfo.cs
│ │ └── SdkOptions.cs
├── Azure.IIoT.OpcUa.Publisher.Service.Sdk
│ ├── cli
│ │ ├── Azure.IIoT.OpcUa.Publisher.Service.Cli.csproj
│ │ ├── Msal
│ │ │ └── TokenProvider.cs
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ └── Runtime
│ │ │ ├── Configuration.cs
│ │ │ └── EnvVars.cs
│ └── src
│ │ ├── Azure.IIoT.OpcUa.Publisher.Service.Sdk.csproj
│ │ ├── Clients
│ │ ├── Extensions.cs
│ │ ├── HistoryServiceClient.cs
│ │ ├── PublisherServiceClient.cs
│ │ ├── PublisherServiceEvents.cs
│ │ ├── RegistryServiceClient.cs
│ │ ├── RegistryServiceEvents.cs
│ │ └── TwinServiceClient.cs
│ │ ├── Extensions
│ │ ├── HistoryServiceApiEx.cs
│ │ ├── PublisherServiceApiEx.cs
│ │ ├── RegistryServiceApiEx.cs
│ │ └── TwinServiceApiEx.cs
│ │ ├── IHistoryServiceApi.cs
│ │ ├── IPublisherEventApi.cs
│ │ ├── IPublisherServiceApi.cs
│ │ ├── IPublisherServiceEvents.cs
│ │ ├── IRegistryEventApi.cs
│ │ ├── IRegistryServiceApi.cs
│ │ ├── IRegistryServiceEvents.cs
│ │ ├── ITwinServiceApi.cs
│ │ ├── Properties
│ │ └── AssemblyInfo.cs
│ │ ├── Runtime
│ │ ├── Configuration.cs
│ │ ├── ContainerBuilderEx.cs
│ │ └── EnvVars.cs
│ │ ├── ServiceClient.cs
│ │ ├── ServiceSdkOptions.cs
│ │ └── SignalR
│ │ ├── ICallbackClient.cs
│ │ ├── ICallbackRegistrar.cs
│ │ ├── SignalRHubClient.cs
│ │ └── SignalRHubClientHost.cs
├── Azure.IIoT.OpcUa.Publisher.Service.WebApi
│ ├── src
│ │ ├── Azure.IIoT.OpcUa.Publisher.Service.WebApi.csproj
│ │ ├── Controllers
│ │ │ ├── ApplicationsController.cs
│ │ │ ├── DiscoveryController.cs
│ │ │ ├── EndpointsController.cs
│ │ │ ├── EventsController.cs
│ │ │ ├── GatewaysController.cs
│ │ │ ├── HistoryController.cs
│ │ │ ├── PublishController.cs
│ │ │ ├── PublishersController.cs
│ │ │ ├── SupervisorsController.cs
│ │ │ ├── TelemetryController.cs
│ │ │ └── TwinController.cs
│ │ ├── Filters
│ │ │ └── ExceptionsFilterAttribute.cs
│ │ ├── Hubs
│ │ │ ├── ApplicationsHub.cs
│ │ │ ├── DiscoverersHub.cs
│ │ │ ├── EndpointsHub.cs
│ │ │ ├── GatewaysHub.cs
│ │ │ ├── PublishersHub.cs
│ │ │ └── SupervisorsHub.cs
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── Runtime
│ │ │ ├── EnvVars.cs
│ │ │ ├── Policies.cs
│ │ │ └── Security.cs
│ │ ├── SignalR
│ │ │ ├── IGroupRegistration.cs
│ │ │ ├── MapToAttribute.cs
│ │ │ ├── NameAttribute.cs
│ │ │ ├── SignalRBuilderEx.cs
│ │ │ ├── SignalRHub.cs
│ │ │ └── SignalRHubEx.cs
│ │ └── Startup.cs
│ └── tests
│ │ ├── Azure.IIoT.OpcUa.Publisher.Service.WebApi.Tests.csproj
│ │ ├── Clients
│ │ ├── ControllerTestClient.cs
│ │ ├── HistoryWebApiAdapter.cs
│ │ ├── PublisherWebApiAdapter.cs
│ │ ├── RegistryWebApiAdapter.cs
│ │ └── TwinWebApiAdapter.cs
│ │ ├── Controllers
│ │ └── TestData
│ │ │ ├── Binary
│ │ │ ├── BrwoseTests.cs
│ │ │ ├── ReadArrayTests.cs
│ │ │ ├── ReadCollection.cs
│ │ │ └── ReadScalarTests.cs
│ │ │ └── Json
│ │ │ ├── BrowseTestEx.cs
│ │ │ ├── ReadArrayTests.cs
│ │ │ ├── ReadCollection.cs
│ │ │ └── ReadScalarTests.cs
│ │ ├── Extensions
│ │ └── EndpointManagerEx.cs
│ │ ├── Fixtures
│ │ ├── PublisherModule.cs
│ │ ├── TestAuthHandler.cs
│ │ ├── TestSerializerType.cs
│ │ ├── TestStartup.cs
│ │ └── WebAppFixture.cs
│ │ ├── GlobalSuppressions.cs
│ │ ├── Logging.cs
│ │ ├── Properties
│ │ └── AssemblyInfo.cs
│ │ └── Sdk
│ │ ├── Alarms
│ │ ├── Json
│ │ │ └── NodeServicesTests.cs
│ │ └── MsgPack
│ │ │ └── NodeServicesTests.cs
│ │ ├── DeterministicAlarms
│ │ ├── Json
│ │ │ ├── NodeServicesTests1.cs
│ │ │ └── NodeServicesTests2.cs
│ │ └── MsgPack
│ │ │ ├── NodeServicesTests1.cs
│ │ │ └── NodeServicesTests2.cs
│ │ ├── HistoricalAccess
│ │ ├── Json
│ │ │ ├── NodeServicesTests.cs
│ │ │ ├── ReadAtTimesTests.cs
│ │ │ ├── ReadCollection.cs
│ │ │ ├── ReadModifiedTests.cs
│ │ │ ├── ReadProcessedTests.cs
│ │ │ ├── ReadValuesTests.cs
│ │ │ └── UpdateValuesTests.cs
│ │ └── MsgPack
│ │ │ ├── NodeServicesTests.cs
│ │ │ ├── ReadAtTimesTests.cs
│ │ │ ├── ReadCollection.cs
│ │ │ ├── ReadModifiedTests.cs
│ │ │ ├── ReadProcessedTests.cs
│ │ │ ├── ReadValuesTests.cs
│ │ │ └── UpdateValuesTests.cs
│ │ ├── HistoricalEvents
│ │ ├── Json
│ │ │ ├── NodeServicesTests.cs
│ │ │ └── ReadCollection.cs
│ │ └── MsgPack
│ │ │ ├── NodeServicesTests.cs
│ │ │ └── ReadCollection.cs
│ │ ├── Plc
│ │ ├── Json
│ │ │ ├── NodeServicesTests1.cs
│ │ │ └── NodeServicesTests2.cs
│ │ └── MsgPack
│ │ │ ├── NodeServicesTests1.cs
│ │ │ └── NodeServicesTests2.cs
│ │ ├── PublisherServiceEventsTests.cs
│ │ ├── RegistryServiceEventsTests.cs
│ │ └── TestData
│ │ ├── Json
│ │ ├── BrowsePathTests.cs
│ │ ├── BrowseStreamTests.cs
│ │ ├── BrowseTest.cs
│ │ ├── CallArrayTests.cs
│ │ ├── CallScalarTests.cs
│ │ ├── MetadataArrayTests.cs
│ │ ├── MetadataScalarTests.cs
│ │ ├── MetadataTests.cs
│ │ ├── ReadArrayTests.cs
│ │ ├── ReadCollection.cs
│ │ ├── ReadScalarTests.cs
│ │ ├── WriteArrayTests.cs
│ │ ├── WriteCollection.cs
│ │ └── WriteScalarTests.cs
│ │ └── MsgPack
│ │ ├── BrowsePathTests.cs
│ │ ├── BrowseStreamTests.cs
│ │ ├── BrowseTest.cs
│ │ ├── CallArrayTests.cs
│ │ ├── CallScalarTests.cs
│ │ ├── MetadataArrayTests.cs
│ │ ├── MetadataScalarTests.cs
│ │ ├── MetadataTests.cs
│ │ ├── ReadArrayTests.cs
│ │ ├── ReadCollection.cs
│ │ ├── ReadScalarTests.cs
│ │ ├── WriteArrayTests.cs
│ │ ├── WriteCollection.cs
│ │ └── WriteScalarTests.cs
├── Azure.IIoT.OpcUa.Publisher.Service
│ ├── src
│ │ ├── Azure.IIoT.OpcUa.Publisher.Service.csproj
│ │ ├── Clients
│ │ │ ├── Adapters
│ │ │ │ ├── DiscoveryApiAdapter.cs
│ │ │ │ ├── HistoryApiAdapter.cs
│ │ │ │ ├── PublisherApiAdapter.cs
│ │ │ │ └── TwinApiAdapter.cs
│ │ │ ├── DiscoveryServicesClient.cs
│ │ │ └── PublisherServicesClient.cs
│ │ ├── EventHandlers.cs
│ │ ├── Events
│ │ │ ├── ApplicationEventPublisher.cs
│ │ │ ├── DiscovererEventPublisher.cs
│ │ │ ├── DiscoveryProgressPublisher.cs
│ │ │ ├── EndpointEventPublisher.cs
│ │ │ ├── GatewayEventPublisher.cs
│ │ │ ├── PublisherEventPublisher.cs
│ │ │ ├── SupervisorEventPublisher.cs
│ │ │ └── TelemetryEventPublisher.cs
│ │ ├── Extensions
│ │ │ └── SerializerExtensions.cs
│ │ ├── Handlers
│ │ │ ├── DeviceTelemetryEventHandler.cs
│ │ │ ├── DiscoveryProgressHandler.cs
│ │ │ ├── DiscoveryResultHandler.cs
│ │ │ ├── MonitoredItemMessageHandler.cs
│ │ │ ├── NetworkMessageJsonHandler.cs
│ │ │ ├── NetworkMessageUadpHandler.cs
│ │ │ └── RegistryLifecycleHandler.cs
│ │ ├── IApplicationBulkProcessor.cs
│ │ ├── IApplicationRegistry.cs
│ │ ├── IApplicationRegistryListener.cs
│ │ ├── ICallbackInvoker.cs
│ │ ├── IDiscovererRegistry.cs
│ │ ├── IDiscovererRegistryListener.cs
│ │ ├── IDiscoveryProgressProcessor.cs
│ │ ├── IDiscoveryResultProcessor.cs
│ │ ├── IEndpointManager.cs
│ │ ├── IEndpointRegistry.cs
│ │ ├── IEndpointRegistryListener.cs
│ │ ├── IGatewayRegistry.cs
│ │ ├── IGatewayRegistryListener.cs
│ │ ├── IMessageHandler.cs
│ │ ├── IPublisherRegistry.cs
│ │ ├── IPublisherRegistryListener.cs
│ │ ├── IPublisherServices.cs
│ │ ├── ISubscriberMessageProcessor.cs
│ │ ├── ISupervisorRegistry.cs
│ │ ├── ISupervisorRegistryListener.cs
│ │ ├── Models
│ │ │ ├── DataSetMessageModel.cs
│ │ │ └── DataValueModel.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── RegistryServices.cs
│ │ ├── Runtime
│ │ │ ├── PublisherDeploymentConfig.cs
│ │ │ └── PublisherDeploymentOptions.cs
│ │ └── Services
│ │ │ ├── ApplicationRegistry.cs
│ │ │ ├── DiscovererRegistry.cs
│ │ │ ├── DiscoveryProcessor.cs
│ │ │ ├── EndpointManager.cs
│ │ │ ├── Extensions
│ │ │ ├── ApplicationRegistrationEx.cs
│ │ │ ├── EndpointRegistrationEx.cs
│ │ │ ├── EntityRegistrationEx.cs
│ │ │ ├── GatewayRegistrationEx.cs
│ │ │ ├── IoTHubExtensions.cs
│ │ │ └── PublisherRegistrationEx.cs
│ │ │ ├── GatewayRegistry.cs
│ │ │ ├── Models
│ │ │ ├── ApplicationRegistration.cs
│ │ │ ├── EndpointRegistration.cs
│ │ │ ├── EntityRegistration.cs
│ │ │ ├── GatewayRegistration.cs
│ │ │ └── PublisherRegistration.cs
│ │ │ ├── PublisherDeployment.cs
│ │ │ ├── PublisherRegistry.cs
│ │ │ └── SupervisorRegistry.cs
│ └── tests
│ │ ├── Azure.IIoT.OpcUa.Publisher.Service.Tests.csproj
│ │ ├── GlobalSuppressions.cs
│ │ └── Services
│ │ ├── ApplicationRegistryTests.cs
│ │ ├── DiscovererRegistryTests.cs
│ │ ├── DiscoveryProcessorTests.cs
│ │ ├── EndpointRegistryTests.cs
│ │ ├── Models
│ │ ├── ApplicationRegistrationTests.cs
│ │ ├── DiscovererRegistrationTests.cs
│ │ ├── EndpointRegistrationTests.cs
│ │ ├── GatewayRegistrationTests.cs
│ │ ├── PublisherRegistrationTests.cs
│ │ └── SupervisorRegistrationTests.cs
│ │ └── SupervisorRegistryTests.cs
├── Azure.IIoT.OpcUa.Publisher.Testing
│ ├── cli
│ │ ├── Azure.IIoT.OpcUa.Publisher.Testing.Cli.csproj
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ └── TestServerFactory.cs
│ ├── src
│ │ ├── Alarms
│ │ │ ├── AlarmConditionNodeManager.cs
│ │ │ ├── AlarmConditionServer.cs
│ │ │ ├── AlarmConditionServerConfiguration.cs
│ │ │ ├── AreaState.cs
│ │ │ ├── ModelUtils.cs
│ │ │ ├── Namespaces.cs
│ │ │ ├── SourceState.cs
│ │ │ ├── UnderlyingSystem.cs
│ │ │ ├── UnderlyingSystemAlarm.cs
│ │ │ ├── UnderlyingSystemAlarmStates.cs
│ │ │ └── UnderlyingSystemSource.cs
│ │ ├── Asset
│ │ │ ├── AssetNodeManager.cs
│ │ │ ├── AssetServer.cs
│ │ │ ├── AssetTag.cs
│ │ │ ├── FileManager.cs
│ │ │ ├── IAsset.cs
│ │ │ ├── ModbusBinding.cs
│ │ │ ├── ModbusFormExtension.cs
│ │ │ ├── ModbusProtocol.cs
│ │ │ ├── ModbusTcpAsset.cs
│ │ │ ├── Namespaces.cs
│ │ │ ├── Samples
│ │ │ │ └── SimulatedAsset.td.jsonld
│ │ │ ├── SimulatedAsset.cs
│ │ │ ├── SimulatedBinding.cs
│ │ │ ├── SimulatedFormExtension.cs
│ │ │ └── ThingDescription.cs
│ │ ├── Azure.IIoT.OpcUa.Publisher.Testing.Servers.csproj
│ │ ├── Boiler
│ │ │ ├── BoilerNodeManager.cs
│ │ │ ├── BoilerServer.cs
│ │ │ ├── BoilerState.cs
│ │ │ ├── BoilerStateMachineState.cs
│ │ │ └── GenericController.cs
│ │ ├── Common
│ │ │ ├── DataChangeMonitoredItem.cs
│ │ │ ├── FolderConfiguration.cs
│ │ │ ├── MonitoredNode.cs
│ │ │ └── SampleNodeManager.cs
│ │ ├── DataAccess
│ │ │ ├── BlockState.cs
│ │ │ ├── DataAccessNodeManager.cs
│ │ │ ├── DataAccessServer.cs
│ │ │ ├── DataAccessServerConfiguration.cs
│ │ │ ├── ModelUtils.cs
│ │ │ ├── Namespaces.cs
│ │ │ ├── SegmentBrowser.cs
│ │ │ ├── SegmentState.cs
│ │ │ ├── UnderlyingSystem.cs
│ │ │ ├── UnderlyingSystemBlock.cs
│ │ │ ├── UnderlyingSystemDataType.cs
│ │ │ ├── UnderlyingSystemSegment.cs
│ │ │ ├── UnderlyingSystemTag.cs
│ │ │ └── UnderlyingSystemTagType.cs
│ │ ├── DeterministicAlarms
│ │ │ ├── Configuration
│ │ │ │ ├── Alarm.cs
│ │ │ │ ├── AlarmObjectStates.cs
│ │ │ │ ├── AlarmsConfiguration.cs
│ │ │ │ ├── ConditionStates.cs
│ │ │ │ ├── Event.cs
│ │ │ │ ├── Folder.cs
│ │ │ │ ├── Script.cs
│ │ │ │ ├── ScriptException.cs
│ │ │ │ ├── Source.cs
│ │ │ │ ├── StateChange.cs
│ │ │ │ └── Step.cs
│ │ │ ├── DeterministicAlarmsNodeManager.cs
│ │ │ ├── DeterministicAlarmsServer.cs
│ │ │ ├── Model
│ │ │ │ ├── SimConditionStatesEnum.cs
│ │ │ │ ├── SimFolderState.cs
│ │ │ │ └── SimSourceNodeState.cs
│ │ │ ├── Namespaces.cs
│ │ │ ├── ScriptEngine.cs
│ │ │ ├── SimBackend
│ │ │ │ ├── SimAlarmStateBackend.cs
│ │ │ │ ├── SimBackendService.cs
│ │ │ │ └── SimSourceNodeBackend.cs
│ │ │ └── readme.md
│ │ ├── FileSystem
│ │ │ ├── DirectoryBrowser.cs
│ │ │ ├── DirectoryObjectState.cs
│ │ │ ├── FileHandle.cs
│ │ │ ├── FileObjectState.cs
│ │ │ ├── FileSystem.cs
│ │ │ ├── FileSystemNodeManager.cs
│ │ │ ├── FileSystemServer.cs
│ │ │ ├── FileSystemServerConfiguration.cs
│ │ │ ├── ModelUtils.cs
│ │ │ └── Namespaces.cs
│ │ ├── Generated
│ │ │ ├── Asset
│ │ │ │ └── Design
│ │ │ │ │ ├── Asset.Classes.cs
│ │ │ │ │ ├── Asset.Constants.cs
│ │ │ │ │ └── Asset.NodeSet2.xml
│ │ │ ├── Boiler
│ │ │ │ └── Design
│ │ │ │ │ ├── Boiler.Classes.cs
│ │ │ │ │ ├── Boiler.Constants.cs
│ │ │ │ │ ├── Boiler.NodeIds.csv
│ │ │ │ │ ├── Boiler.NodeSet.xml
│ │ │ │ │ ├── Boiler.NodeSet2.xml
│ │ │ │ │ ├── Boiler.PredefinedNodes.uanodes
│ │ │ │ │ ├── Boiler.PredefinedNodes.xml
│ │ │ │ │ ├── Boiler.Types.bsd
│ │ │ │ │ ├── Boiler.Types.xsd
│ │ │ │ │ ├── BoilerDesign.csv
│ │ │ │ │ └── BoilerDesign.xml
│ │ │ ├── BuildDesigns.bat
│ │ │ ├── BuildNodesets.bat
│ │ │ ├── HistoricalEvents
│ │ │ │ └── Design
│ │ │ │ │ ├── HistoricalEvents.Classes.cs
│ │ │ │ │ ├── HistoricalEvents.Constants.cs
│ │ │ │ │ ├── HistoricalEvents.NodeIds.csv
│ │ │ │ │ ├── HistoricalEvents.NodeSet.xml
│ │ │ │ │ ├── HistoricalEvents.NodeSet2.xml
│ │ │ │ │ ├── HistoricalEvents.PredefinedNodes.uanodes
│ │ │ │ │ ├── HistoricalEvents.PredefinedNodes.xml
│ │ │ │ │ ├── HistoricalEvents.Types.bsd
│ │ │ │ │ ├── HistoricalEvents.Types.xsd
│ │ │ │ │ ├── ModelDesign.csv
│ │ │ │ │ └── ModelDesign.xml
│ │ │ ├── Isa95Jobs
│ │ │ │ ├── Design
│ │ │ │ │ ├── UAModel.ISA95_JOBCONTROL_V2.Classes.cs
│ │ │ │ │ ├── UAModel.ISA95_JOBCONTROL_V2.Constants.cs
│ │ │ │ │ ├── UAModel.ISA95_JOBCONTROL_V2.DataTypes.cs
│ │ │ │ │ ├── UAModel.ISA95_JOBCONTROL_V2.NodeIds.csv
│ │ │ │ │ ├── UAModel.ISA95_JOBCONTROL_V2.NodeIds.permissions.csv
│ │ │ │ │ ├── UAModel.ISA95_JOBCONTROL_V2.NodeSet.xml
│ │ │ │ │ ├── UAModel.ISA95_JOBCONTROL_V2.NodeSet2.documentation.csv
│ │ │ │ │ ├── UAModel.ISA95_JOBCONTROL_V2.NodeSet2.xml
│ │ │ │ │ ├── UAModel.ISA95_JOBCONTROL_V2.PredefinedNodes.uanodes
│ │ │ │ │ ├── UAModel.ISA95_JOBCONTROL_V2.PredefinedNodes.xml
│ │ │ │ │ ├── UAModel.ISA95_JOBCONTROL_V2.Types.bsd
│ │ │ │ │ └── UAModel.ISA95_JOBCONTROL_V2.Types.xsd
│ │ │ │ └── Nodesets
│ │ │ │ │ ├── opc.ua.isa95-jobcontrol.nodeids.csv
│ │ │ │ │ ├── opc.ua.isa95-jobcontrol.nodeset2.documentation.csv
│ │ │ │ │ ├── opc.ua.isa95-jobcontrol.nodeset2.xml
│ │ │ │ │ ├── opc.ua.isa95-jobcontrol.types.bsd
│ │ │ │ │ └── opc.ua.isa95-jobcontrol.types.xsd
│ │ │ ├── MemoryBuffer
│ │ │ │ └── Design
│ │ │ │ │ ├── MemoryBuffer.Classes.cs
│ │ │ │ │ ├── MemoryBuffer.Constants.cs
│ │ │ │ │ ├── MemoryBuffer.NodeIds.csv
│ │ │ │ │ ├── MemoryBuffer.NodeSet.xml
│ │ │ │ │ ├── MemoryBuffer.NodeSet2.xml
│ │ │ │ │ ├── MemoryBuffer.PredefinedNodes.uanodes
│ │ │ │ │ ├── MemoryBuffer.PredefinedNodes.xml
│ │ │ │ │ ├── MemoryBuffer.Types.bsd
│ │ │ │ │ ├── MemoryBuffer.Types.xsd
│ │ │ │ │ ├── MemoryBufferDesign.csv
│ │ │ │ │ └── MemoryBufferDesign.xml
│ │ │ ├── Plc
│ │ │ │ └── Design
│ │ │ │ │ ├── ModelDesign.csv
│ │ │ │ │ ├── ModelDesign.xml
│ │ │ │ │ ├── PlcModel.Classes.cs
│ │ │ │ │ ├── PlcModel.Constants.cs
│ │ │ │ │ ├── PlcModel.DataTypes.cs
│ │ │ │ │ ├── PlcModel.NodeIds.csv
│ │ │ │ │ ├── PlcModel.NodeSet.xml
│ │ │ │ │ ├── PlcModel.NodeSet2.xml
│ │ │ │ │ ├── PlcModel.PredefinedNodes.uanodes
│ │ │ │ │ ├── PlcModel.PredefinedNodes.xml
│ │ │ │ │ ├── PlcModel.Types.bsd
│ │ │ │ │ └── PlcModel.Types.xsd
│ │ │ ├── SimpleEvents
│ │ │ │ └── Design
│ │ │ │ │ ├── ModelDesign.csv
│ │ │ │ │ ├── ModelDesign.xml
│ │ │ │ │ ├── SimpleEvents.Classes.cs
│ │ │ │ │ ├── SimpleEvents.Constants.cs
│ │ │ │ │ ├── SimpleEvents.DataTypes.cs
│ │ │ │ │ ├── SimpleEvents.NodeIds.csv
│ │ │ │ │ ├── SimpleEvents.NodeSet.xml
│ │ │ │ │ ├── SimpleEvents.NodeSet2.xml
│ │ │ │ │ ├── SimpleEvents.PredefinedNodes.uanodes
│ │ │ │ │ ├── SimpleEvents.PredefinedNodes.xml
│ │ │ │ │ ├── SimpleEvents.Types.bsd
│ │ │ │ │ └── SimpleEvents.Types.xsd
│ │ │ ├── TestData
│ │ │ │ └── Design
│ │ │ │ │ ├── TestData.Classes.cs
│ │ │ │ │ ├── TestData.Constants.cs
│ │ │ │ │ ├── TestData.DataTypes.cs
│ │ │ │ │ ├── TestData.NodeIds.csv
│ │ │ │ │ ├── TestData.NodeSet.xml
│ │ │ │ │ ├── TestData.NodeSet2.xml
│ │ │ │ │ ├── TestData.PredefinedNodes.uanodes
│ │ │ │ │ ├── TestData.PredefinedNodes.xml
│ │ │ │ │ ├── TestData.Types.bsd
│ │ │ │ │ ├── TestData.Types.xsd
│ │ │ │ │ ├── TestDataDesign.csv
│ │ │ │ │ └── TestDataDesign.xml
│ │ │ ├── Vehicles
│ │ │ │ └── Design
│ │ │ │ │ ├── ModelDesign1.csv
│ │ │ │ │ ├── ModelDesign1.xml
│ │ │ │ │ ├── ModelDesign2.csv
│ │ │ │ │ ├── ModelDesign2.xml
│ │ │ │ │ ├── Vehicles.Instances.Constants.cs
│ │ │ │ │ ├── Vehicles.Instances.DataTypes.cs
│ │ │ │ │ ├── Vehicles.Instances.NodeIds.csv
│ │ │ │ │ ├── Vehicles.Instances.NodeSet.xml
│ │ │ │ │ ├── Vehicles.Instances.NodeSet2.xml
│ │ │ │ │ ├── Vehicles.Instances.PredefinedNodes.uanodes
│ │ │ │ │ ├── Vehicles.Instances.PredefinedNodes.xml
│ │ │ │ │ ├── Vehicles.Instances.Types.bsd
│ │ │ │ │ ├── Vehicles.Instances.Types.xsd
│ │ │ │ │ ├── Vehicles.Types.Classes.cs
│ │ │ │ │ ├── Vehicles.Types.Constants.cs
│ │ │ │ │ ├── Vehicles.Types.DataTypes.cs
│ │ │ │ │ ├── Vehicles.Types.NodeIds.csv
│ │ │ │ │ ├── Vehicles.Types.NodeSet.xml
│ │ │ │ │ ├── Vehicles.Types.NodeSet2.xml
│ │ │ │ │ ├── Vehicles.Types.PredefinedNodes.uanodes
│ │ │ │ │ ├── Vehicles.Types.PredefinedNodes.xml
│ │ │ │ │ ├── Vehicles.Types.Types.bsd
│ │ │ │ │ └── Vehicles.Types.Types.xsd
│ │ │ └── Views
│ │ │ │ └── Design
│ │ │ │ ├── Engineering.Constants.cs
│ │ │ │ ├── Engineering.NodeIds.csv
│ │ │ │ ├── Engineering.NodeSet.xml
│ │ │ │ ├── Engineering.NodeSet2.xml
│ │ │ │ ├── Engineering.PredefinedNodes.uanodes
│ │ │ │ ├── Engineering.PredefinedNodes.xml
│ │ │ │ ├── Engineering.Types.bsd
│ │ │ │ ├── Engineering.Types.xsd
│ │ │ │ ├── EngineeringDesign.csv
│ │ │ │ ├── EngineeringDesign.xml
│ │ │ │ ├── Model.Classes.cs
│ │ │ │ ├── Model.Constants.cs
│ │ │ │ ├── Model.NodeIds.csv
│ │ │ │ ├── Model.NodeSet.xml
│ │ │ │ ├── Model.NodeSet2.xml
│ │ │ │ ├── Model.PredefinedNodes.uanodes
│ │ │ │ ├── Model.PredefinedNodes.xml
│ │ │ │ ├── Model.Types.bsd
│ │ │ │ ├── Model.Types.xsd
│ │ │ │ ├── ModelDesign.csv
│ │ │ │ ├── ModelDesign.xml
│ │ │ │ ├── Operations.Constants.cs
│ │ │ │ ├── Operations.NodeIds.csv
│ │ │ │ ├── Operations.NodeSet.xml
│ │ │ │ ├── Operations.NodeSet2.xml
│ │ │ │ ├── Operations.PredefinedNodes.uanodes
│ │ │ │ ├── Operations.PredefinedNodes.xml
│ │ │ │ ├── Operations.Types.bsd
│ │ │ │ ├── Operations.Types.xsd
│ │ │ │ ├── OperationsDesign.csv
│ │ │ │ └── OperationsDesign.xml
│ │ ├── GlobalSuppressions.cs
│ │ ├── HistoricalAccess
│ │ │ ├── ArchiveFolder.cs
│ │ │ ├── ArchiveFolderBrowser.cs
│ │ │ ├── ArchiveFolderState.cs
│ │ │ ├── ArchiveItem.cs
│ │ │ ├── ArchiveItemState.cs
│ │ │ ├── Data
│ │ │ │ ├── Dynamic
│ │ │ │ │ ├── Boolean.txt
│ │ │ │ │ ├── Byte.txt
│ │ │ │ │ ├── DateTime.txt
│ │ │ │ │ ├── Double.txt
│ │ │ │ │ ├── Float.txt
│ │ │ │ │ ├── Int16.txt
│ │ │ │ │ ├── Int32.txt
│ │ │ │ │ ├── Int64.txt
│ │ │ │ │ ├── SByte.txt
│ │ │ │ │ ├── String.txt
│ │ │ │ │ ├── UInt16.txt
│ │ │ │ │ ├── UInt32.txt
│ │ │ │ │ └── UInt64.txt
│ │ │ │ └── Sample
│ │ │ │ │ ├── Boolean.txt
│ │ │ │ │ ├── Byte.txt
│ │ │ │ │ ├── ByteString.txt
│ │ │ │ │ ├── DateTime.txt
│ │ │ │ │ ├── Double.txt
│ │ │ │ │ ├── Float.txt
│ │ │ │ │ ├── Historian1.xlsx
│ │ │ │ │ ├── Historian1ExpectedData.csv
│ │ │ │ │ ├── Historian2ExpectedData.csv
│ │ │ │ │ ├── Historian3ExpectedData.csv
│ │ │ │ │ ├── Int16.txt
│ │ │ │ │ ├── Int32.txt
│ │ │ │ │ ├── Int64.txt
│ │ │ │ │ ├── SByte.txt
│ │ │ │ │ ├── String.txt
│ │ │ │ │ ├── UInt16.txt
│ │ │ │ │ ├── UInt32.txt
│ │ │ │ │ └── UInt64.txt
│ │ │ ├── DataFileReader.cs
│ │ │ ├── HistoricalAccessNodeManager.cs
│ │ │ ├── HistoricalAccessServer.cs
│ │ │ ├── HistoricalAccessServerConfiguration.cs
│ │ │ ├── Namespaces.cs
│ │ │ ├── NodeTypes.cs
│ │ │ └── UnderlyingSystem.cs
│ │ ├── HistoricalEvents
│ │ │ ├── HistoricalEventsNodeManager.cs
│ │ │ ├── HistoricalEventsServer.cs
│ │ │ ├── HistoricalEventsServerConfiguration.cs
│ │ │ └── ReportGenerator.cs
│ │ ├── IServerFactory.cs
│ │ ├── IServerHost.cs
│ │ ├── ITestServer.cs
│ │ ├── Isa95Jobs
│ │ │ ├── Isa95JobControlNodeManager.cs
│ │ │ ├── Isa95JobControlServer.cs
│ │ │ └── Isa95JobControlServerConfiguration.cs
│ │ ├── MemoryBuffer
│ │ │ ├── MemoryBufferBrowser.cs
│ │ │ ├── MemoryBufferConfiguration.cs
│ │ │ ├── MemoryBufferMonitoredItem.cs
│ │ │ ├── MemoryBufferNodeManager.cs
│ │ │ ├── MemoryBufferServer.cs
│ │ │ ├── MemoryBufferState.cs
│ │ │ └── MemoryTagState.cs
│ │ ├── PerfTest
│ │ │ ├── MemoryRegisterState.cs
│ │ │ ├── Namespaces.cs
│ │ │ ├── PerfTestNodeManager.cs
│ │ │ ├── PerfTestServer.cs
│ │ │ ├── PerfTestServerConfiguration.cs
│ │ │ └── UnderlyingSystem.cs
│ │ ├── Plc
│ │ │ ├── Models
│ │ │ │ ├── BaseDataVariableStateExtended.cs
│ │ │ │ ├── IPluginNodes.cs
│ │ │ │ ├── NodeWithIntervals.cs
│ │ │ │ └── SimulatedVariableNode.cs
│ │ │ ├── NamespaceType.cs
│ │ │ ├── Namespaces.cs
│ │ │ ├── PlcNodeManager.cs
│ │ │ ├── PlcServer.cs
│ │ │ ├── PlcSimulation.cs
│ │ │ └── PluginNodes
│ │ │ │ ├── ComplexTypePluginNode.cs
│ │ │ │ ├── DataPluginNodes.cs
│ │ │ │ ├── DeterministicGuidPluginNodes.cs
│ │ │ │ ├── DipPluginNode.cs
│ │ │ │ ├── FastPluginNodes.cs
│ │ │ │ ├── FastRandomPluginNodes.cs
│ │ │ │ ├── LongIdPluginNode.cs
│ │ │ │ ├── LongStringPluginNodes.cs
│ │ │ │ ├── NegTrendPluginNode.cs
│ │ │ │ ├── NodeType.cs
│ │ │ │ ├── PosTrendPluginNode.cs
│ │ │ │ ├── SlowFastCommon.cs
│ │ │ │ ├── SlowPluginNodes.cs
│ │ │ │ ├── SlowRandomPluginNodes.cs
│ │ │ │ ├── SpecialCharNamePluginNode.cs
│ │ │ │ └── SpikePluginNode.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── Reference
│ │ │ ├── Namespaces.cs
│ │ │ ├── ReferenceNodeManager.cs
│ │ │ ├── ReferenceServer.cs
│ │ │ └── ReferenceServerConfiguration.cs
│ │ ├── ServerConsoleHost.cs
│ │ ├── ServerFactory.cs
│ │ ├── SimpleEvents
│ │ │ ├── SimpleEventsNodeManager.cs
│ │ │ ├── SimpleEventsServer.cs
│ │ │ └── SimpleEventsServerConfiguration.cs
│ │ ├── TestData
│ │ │ ├── AnalogArrayValueObjectState.cs
│ │ │ ├── AnalogScalarValueObjectState.cs
│ │ │ ├── ArrayValueObjectState.cs
│ │ │ ├── HistoryArchive.cs
│ │ │ ├── MethodTestState.cs
│ │ │ ├── ScalarValueObjectState.cs
│ │ │ ├── TestDataNodeManager.cs
│ │ │ ├── TestDataNodeManagerConfiguration.cs
│ │ │ ├── TestDataObjectState.cs
│ │ │ ├── TestDataServer.cs
│ │ │ ├── TestDataSystem.cs
│ │ │ ├── TestSystemConditionState.cs
│ │ │ ├── UserArrayValueObjectState.cs
│ │ │ └── UserScalarValueObjectState.cs
│ │ ├── Utils
│ │ │ ├── DeterministicGuid.cs
│ │ │ ├── FastTimer.cs
│ │ │ ├── FastTimerElapsedEventArgs.cs
│ │ │ ├── ITimer.cs
│ │ │ ├── TestDataGenerator.cs
│ │ │ └── TimeService.cs
│ │ ├── Vehicles
│ │ │ ├── Namespaces.cs
│ │ │ ├── VehiclesNodeManager.cs
│ │ │ ├── VehiclesServer.cs
│ │ │ └── VehiclesServerConfiguration.cs
│ │ └── Views
│ │ │ ├── ViewsNodeManager.cs
│ │ │ ├── ViewsServer.cs
│ │ │ └── ViewsServerConfiguration.cs
│ └── tests
│ │ ├── Azure.IIoT.OpcUa.Publisher.Testing.csproj
│ │ ├── Extensions
│ │ └── OpcUaClientManagerEx.cs
│ │ ├── Fixtures
│ │ ├── AlarmsServer.cs
│ │ ├── AssetServer.cs
│ │ ├── BaseServerFixture.cs
│ │ ├── DeterministicAlarmsServer1.cs
│ │ ├── DeterministicAlarmsServer2.cs
│ │ ├── FileSystemServer.cs
│ │ ├── HistoricalAccessServer.cs
│ │ ├── HistoricalEventsServer.cs
│ │ ├── Isa95JobsServer.cs
│ │ ├── PlcServer.cs
│ │ ├── ReferenceServer.cs
│ │ ├── SimpleEventsServer.cs
│ │ └── TestDataServer.cs
│ │ ├── Properties
│ │ └── AssemblyInfo.cs
│ │ ├── Runtime
│ │ └── TestClientConfig.cs
│ │ └── Tests
│ │ ├── Alarms
│ │ └── AlarmServerTests.cs
│ │ ├── Asset
│ │ ├── AssetTests1.cs
│ │ ├── AssetTests2.cs
│ │ ├── AssetTests3.cs
│ │ └── AssetTests4.cs
│ │ ├── DeterministicAlarms
│ │ ├── DeterministicAlarmsTests1.cs
│ │ ├── DeterministicAlarmsTests2.cs
│ │ └── Extensions
│ │ │ └── Extensions.cs
│ │ ├── FileSystem
│ │ ├── BrowseTests.cs
│ │ ├── OperationsTests.cs
│ │ ├── ReadTests.cs
│ │ └── WriteTests.cs
│ │ ├── HistoricalAccess
│ │ ├── HistoryReadValuesAtTimes.cs
│ │ ├── HistoryReadValuesModified.cs
│ │ ├── HistoryReadValuesProcessed.cs
│ │ ├── HistoryReadValuesTests.cs
│ │ ├── HistoryUpdateValuesTests.cs
│ │ └── NodeHistoricalAccessTests.cs
│ │ ├── HistoricalEvents
│ │ └── NodeHistoricalEventsTests.cs
│ │ ├── Isa95Jobs
│ │ └── Isa95JobsServerTests.cs
│ │ ├── Plc
│ │ ├── PlcModelComplexTypeTests.cs
│ │ └── SimulatorNodesTests.cs
│ │ ├── SimpleEvents
│ │ └── SimpleEventsServerTests.cs
│ │ └── TestData
│ │ ├── BrowsePathTests.cs
│ │ ├── BrowseServicesTests.cs
│ │ ├── BrowseStreamTests.cs
│ │ ├── CallArrayMethodTests.cs
│ │ ├── CallScalarMethodTests.cs
│ │ ├── ConfigurationTests1.cs
│ │ ├── ConfigurationTests2.cs
│ │ ├── NodeMetadataTests.cs
│ │ ├── ReadArrayValueTests.cs
│ │ ├── ReadScalarValueTests.cs
│ │ ├── WriteArrayValueTests.cs
│ │ └── WriteScalarValueTests.cs
├── Azure.IIoT.OpcUa.Publisher
│ ├── src
│ │ ├── Azure.IIoT.OpcUa.Publisher.csproj
│ │ ├── Constants.cs
│ │ ├── Discovery
│ │ │ ├── NetworkDiscovery.cs
│ │ │ ├── ProgressLogger.cs
│ │ │ ├── ProgressPublisher.cs
│ │ │ └── ServerDiscovery.cs
│ │ ├── Extensions
│ │ │ ├── ContainerBuilderEx.cs
│ │ │ ├── DataSetWriterModelEx.cs
│ │ │ ├── PublishedDataSetSourceModelEx.cs
│ │ │ └── RequestHeaderModelEx.cs
│ │ ├── IApiKeyProvider.cs
│ │ ├── IAssetConfiguration.cs
│ │ ├── IClientDiagnostics.cs
│ │ ├── IConfigurationServices.cs
│ │ ├── IDiagnosticCollector.cs
│ │ ├── IDiscoveryProgress.cs
│ │ ├── IMessageEncoder.cs
│ │ ├── IMessageSink.cs
│ │ ├── INodeServicesInternal.cs
│ │ ├── IProcessControl.cs
│ │ ├── IPublishedNodesServices.cs
│ │ ├── IPublisher.cs
│ │ ├── IRuntimeStateReporter.cs
│ │ ├── ISslCertProvider.cs
│ │ ├── IStorageProvider.cs
│ │ ├── IWriterGroupControl.cs
│ │ ├── IWriterGroupDiagnostics.cs
│ │ ├── IWriterGroupScope.cs
│ │ ├── IWriterGroupScopeFactory.cs
│ │ ├── Models
│ │ │ ├── DataSetWriterContext.cs
│ │ │ ├── DiscoveryRequest.cs
│ │ │ └── MessagingProfile.cs
│ │ ├── Parser
│ │ │ ├── Extensions
│ │ │ │ └── Extensions.cs
│ │ │ ├── FilterModelBuilder.cs
│ │ │ ├── FilterQueryGrammar.cs
│ │ │ ├── FilterQueryParser.cs
│ │ │ ├── IFilterParser.cs
│ │ │ ├── IFilterParserContext.cs
│ │ │ ├── ParserException.cs
│ │ │ ├── RelativePathParser.cs
│ │ │ └── SessionParserContext.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── Runtime
│ │ │ ├── PublisherConfig.cs
│ │ │ ├── PublisherOptions.cs
│ │ │ ├── TopicBuilder.cs
│ │ │ └── TopicTemplatesOptions.cs
│ │ ├── Services
│ │ │ ├── AsyncEnumerableBrowser.cs
│ │ │ ├── ConfigurationServices.cs
│ │ │ ├── DataSetWriter.cs
│ │ │ ├── Extensions.cs
│ │ │ ├── FileSystemServices.cs
│ │ │ ├── HistoryServices.cs
│ │ │ ├── NetworkMessageEncoder.cs
│ │ │ ├── NetworkMessageSink.cs
│ │ │ ├── NodeServices.cs
│ │ │ ├── PublishedNodesJsonServices.cs
│ │ │ ├── PublisherDiagnosticCollector.cs
│ │ │ ├── PublisherModule.cs
│ │ │ ├── PublisherService.cs
│ │ │ ├── RollingAverage.cs
│ │ │ ├── RuntimeStateReporter.cs
│ │ │ ├── WriterGroupDataSource.cs
│ │ │ └── WriterGroupScopeFactory.cs
│ │ ├── Stack
│ │ │ ├── AsyncEnumerableBase.cs
│ │ │ ├── AsyncEnumerableStack.cs
│ │ │ ├── Extensions
│ │ │ │ ├── AssetsEx.cs
│ │ │ │ ├── CertificateStoreEx.cs
│ │ │ │ ├── CertificateTrustListEx.cs
│ │ │ │ ├── ContainerBuilderEx.cs
│ │ │ │ ├── DataValueEx.cs
│ │ │ │ ├── DiscoveredEndpointModelEx.cs
│ │ │ │ ├── DiscoveryClientEx.cs
│ │ │ │ ├── EndpointDescriptionEx.cs
│ │ │ │ ├── FileSystemEx.cs
│ │ │ │ ├── FilterEncoderEx.cs
│ │ │ │ ├── MonitoredItemEx.cs
│ │ │ │ ├── NodeStateEx.cs
│ │ │ │ ├── OperationLimitsEx.cs
│ │ │ │ ├── RelativePathEx.cs
│ │ │ │ ├── SequenceNumber.cs
│ │ │ │ ├── ServiceResponseEx.cs
│ │ │ │ ├── ServiceResultEx.cs
│ │ │ │ ├── SessionEx.cs
│ │ │ │ ├── StackModelsEx.cs
│ │ │ │ ├── StackTypesEx.cs
│ │ │ │ ├── SubscriptionModelEx.cs
│ │ │ │ └── VariantEncoderEx.cs
│ │ │ ├── IEndpointDiscovery.cs
│ │ │ ├── IOpcUaBrowser.cs
│ │ │ ├── IOpcUaCertificates.cs
│ │ │ ├── IOpcUaClientDiagnostics.cs
│ │ │ ├── IOpcUaClientManager.cs
│ │ │ ├── IOpcUaConfiguration.cs
│ │ │ ├── IOpcUaSession.cs
│ │ │ ├── ISessionHandle.cs
│ │ │ ├── ISessionServices.cs
│ │ │ ├── ISubscriber.cs
│ │ │ ├── ISubscription.cs
│ │ │ ├── ISubscriptionDiagnostics.cs
│ │ │ ├── Models
│ │ │ │ ├── AttributeMap.cs
│ │ │ │ ├── BaseMonitoredItemModel.cs
│ │ │ │ ├── ConnectionIdentifier.cs
│ │ │ │ ├── DataMonitoredItemModel.cs
│ │ │ │ ├── DiscoveredEndpointModel.cs
│ │ │ │ ├── EndpointIdentifier.cs
│ │ │ │ ├── EventMonitoredItemModel.cs
│ │ │ │ ├── ImmutableRelativePath.cs
│ │ │ │ ├── MonitoredAddressSpaceModel.cs
│ │ │ │ ├── MonitoredItemNotificationModel.cs
│ │ │ │ ├── MonitoredItemSourceFlags.cs
│ │ │ │ ├── SampledDataValueModel.cs
│ │ │ │ ├── ServiceCallContext.cs
│ │ │ │ ├── ServiceResponse.cs
│ │ │ │ └── SubscriptionModel.cs
│ │ │ ├── Runtime
│ │ │ │ ├── CertificateInfo.cs
│ │ │ │ ├── CertificateStore.cs
│ │ │ │ ├── OpcUaClientConfig.cs
│ │ │ │ ├── OpcUaClientOptions.cs
│ │ │ │ ├── OpcUaSubscriptionConfig.cs
│ │ │ │ ├── OpcUaSubscriptionOptions.cs
│ │ │ │ ├── SecurityOptions.cs
│ │ │ │ └── TransportOptions.cs
│ │ │ ├── Services
│ │ │ │ ├── OpcUaApplication.cs
│ │ │ │ ├── OpcUaClient.Browser.cs
│ │ │ │ ├── OpcUaClient.Sampler.cs
│ │ │ │ ├── OpcUaClient.Subscription.cs
│ │ │ │ ├── OpcUaClient.cs
│ │ │ │ ├── OpcUaClientManager.cs
│ │ │ │ ├── OpcUaClientTagList.cs
│ │ │ │ ├── OpcUaMonitoredItem.Condition.cs
│ │ │ │ ├── OpcUaMonitoredItem.CyclicRead.cs
│ │ │ │ ├── OpcUaMonitoredItem.DataChange.cs
│ │ │ │ ├── OpcUaMonitoredItem.Event.cs
│ │ │ │ ├── OpcUaMonitoredItem.Heartbeat.cs
│ │ │ │ ├── OpcUaMonitoredItem.ModelChange.cs
│ │ │ │ ├── OpcUaMonitoredItem.cs
│ │ │ │ ├── OpcUaSession.cs
│ │ │ │ ├── OpcUaStack.cs
│ │ │ │ ├── OpcUaStackKeySetLogger.cs
│ │ │ │ ├── OpcUaSubscription.cs
│ │ │ │ └── OpcUaSubscriptionNotification.cs
│ │ │ ├── StackExtensions.cs
│ │ │ └── Transport
│ │ │ │ ├── Extensions
│ │ │ │ ├── EndPointEx.cs
│ │ │ │ ├── IPAddressEx.cs
│ │ │ │ ├── NetworkInformationEx.cs
│ │ │ │ └── PhysicalAddressEx.cs
│ │ │ │ ├── IAsyncProbe.cs
│ │ │ │ ├── IPortProbe.cs
│ │ │ │ ├── IScanner.cs
│ │ │ │ ├── Models
│ │ │ │ ├── AddressRange.cs
│ │ │ │ ├── IPv4Address.cs
│ │ │ │ ├── NetInterface.cs
│ │ │ │ ├── NetworkClass.cs
│ │ │ │ └── PortRange.cs
│ │ │ │ ├── Probe
│ │ │ │ └── ServerProbe.cs
│ │ │ │ └── Scanner
│ │ │ │ ├── BaseConnectProbe.cs
│ │ │ │ ├── NetworkScanner.cs
│ │ │ │ └── PortScanner.cs
│ │ └── Storage
│ │ │ ├── PhysicalFileProviderFactory.cs
│ │ │ ├── PublishedNodesConverter.cs
│ │ │ └── PublishedNodesProvider.cs
│ └── tests
│ │ ├── Azure.IIoT.OpcUa.Publisher.Tests.csproj
│ │ ├── GlobalSuppressions.cs
│ │ ├── Logging.cs
│ │ ├── Model
│ │ └── MonitoredItemModelTests.cs
│ │ ├── Parser
│ │ ├── ContentFilterParserTests.cs
│ │ ├── EventFilterParserTests.cs
│ │ └── TestParserContext.cs
│ │ ├── Properties
│ │ └── AssemblyInfo.cs
│ │ ├── Publisher
│ │ ├── empty_pn.json
│ │ ├── pn_2.5_legacy.json
│ │ ├── pn_2.5_legacy_error.json
│ │ ├── pn_assets.json
│ │ ├── pn_assets_with_optional_fields.json
│ │ ├── pn_events.json
│ │ ├── pn_opc_nodes_empty.json
│ │ ├── pn_opc_nodes_empty_and_null.json
│ │ ├── pn_opc_nodes_null.json
│ │ ├── pn_pending_alarms.json
│ │ ├── publishednodes.json
│ │ ├── publishednodes_with_duplicates.json
│ │ └── publishednodeswithoptionalfields.json
│ │ ├── Runtime
│ │ └── TopicBuilderTests.cs
│ │ ├── Services
│ │ ├── Alarms
│ │ │ └── NodeServicesTests.cs
│ │ ├── Asset
│ │ │ ├── ConfigurationTest1.cs
│ │ │ ├── ConfigurationTest2.cs
│ │ │ ├── ConfigurationTest3.cs
│ │ │ ├── ConfigurationTest4.cs
│ │ │ ├── WriteCollection1.cs
│ │ │ ├── WriteCollection2.cs
│ │ │ ├── WriteCollection3.cs
│ │ │ └── WriteCollection4.cs
│ │ ├── DeterministicAlarms
│ │ │ ├── NodeServicesTests1.cs
│ │ │ └── NodeServicesTests2.cs
│ │ ├── Encoder
│ │ │ ├── MonitoredItemMessageEncoderJsonGzipTests.cs
│ │ │ ├── MonitoredItemMessageEncoderJsonTests.cs
│ │ │ ├── NetworkMessage.cs
│ │ │ ├── NetworkMessageEncoderJsonGzipTests.cs
│ │ │ ├── NetworkMessageEncoderJsonTests.cs
│ │ │ ├── NetworkMessageEncoderLegacyTests.cs
│ │ │ └── NetworkMessageEncoderUadpTests.cs
│ │ ├── FileSystem
│ │ │ ├── BrowseTests.cs
│ │ │ ├── FileCollection.cs
│ │ │ ├── OperationsTests.cs
│ │ │ ├── ReadTests.cs
│ │ │ └── WriteTests.cs
│ │ ├── HistoricalAccess
│ │ │ ├── NodeServicesTests.cs
│ │ │ ├── ReadAtTimesTests.cs
│ │ │ ├── ReadCollection.cs
│ │ │ ├── ReadModifiedTests.cs
│ │ │ ├── ReadProcessedTests.cs
│ │ │ ├── ReadValuesTests.cs
│ │ │ └── UpdateValuesTests.cs
│ │ ├── HistoricalEvents
│ │ │ ├── NodeServicesTests.cs
│ │ │ └── ReadCollection.cs
│ │ ├── Plc
│ │ │ ├── NodeServicesTests1.cs
│ │ │ └── NodeServicesTests2.cs
│ │ ├── PublishedNodesJsonServicesTests.cs
│ │ ├── RuntimeStateReporterTests.cs
│ │ ├── SimpleEvents
│ │ │ └── NodeServicesTests.cs
│ │ └── TestData
│ │ │ ├── BrowsePathTests.cs
│ │ │ ├── BrowseStreamTests.cs
│ │ │ ├── BrowseTests.cs
│ │ │ ├── CallArrayTests.cs
│ │ │ ├── CallScalarTests.cs
│ │ │ ├── ExpandTests1.cs
│ │ │ ├── ExpandTests2.cs
│ │ │ ├── MetadataArrayTests.cs
│ │ │ ├── MetadataScalarTests.cs
│ │ │ ├── MetadataTests.cs
│ │ │ ├── ReadArrayTests.cs
│ │ │ ├── ReadCollection.cs
│ │ │ ├── ReadScalarTests.cs
│ │ │ ├── WriteArrayTests.cs
│ │ │ ├── WriteCollection.cs
│ │ │ └── WriteScalarTests.cs
│ │ ├── Stack
│ │ ├── Extensions
│ │ │ ├── RelativePathExTests.cs
│ │ │ └── SequenceNumberTests.cs
│ │ ├── GetBrowsePathsFromRootTests.cs
│ │ ├── GetSimpleEventFilterTests.cs
│ │ ├── OpcUaApplicationTests.cs
│ │ ├── OpcUaMonitoredItemTests.cs
│ │ ├── OpcUaMonitoredItemTestsBase.cs
│ │ └── Transport
│ │ │ ├── Extensions
│ │ │ └── NetworkInformationExTests.cs
│ │ │ └── Models
│ │ │ ├── AddressRangeTests.cs
│ │ │ ├── IPv4AddressTests.cs
│ │ │ └── PortRangeTests.cs
│ │ ├── Storage
│ │ └── PublishedNodesJobConverterTests.cs
│ │ └── Utils
│ │ ├── TempFileProviderBase.cs
│ │ └── Utils.cs
├── Azure.IIoT.OpcUa
│ ├── src
│ │ ├── Azure.IIoT.OpcUa.csproj
│ │ ├── Encoders
│ │ │ ├── AvroBinaryReader.cs
│ │ │ ├── AvroBinaryWriter.cs
│ │ │ ├── AvroDecoder.cs
│ │ │ ├── AvroEncoder.cs
│ │ │ ├── AvroFileReader.cs
│ │ │ ├── AvroFileWriter.cs
│ │ │ ├── AvroFileWriterOptions.cs
│ │ │ ├── AvroSchemaBuilder.cs
│ │ │ ├── AvroSchemaTraverser.cs
│ │ │ ├── BaseAvroDecoder.cs
│ │ │ ├── BaseAvroEncoder.cs
│ │ │ ├── ConsoleWriter.cs
│ │ │ ├── ConsoleWriterOptions.cs
│ │ │ ├── ContentType.cs
│ │ │ ├── DecodingException.cs
│ │ │ ├── EncodingException.cs
│ │ │ ├── Extensions.cs
│ │ │ ├── Extensions
│ │ │ │ ├── EncodeableEx.cs
│ │ │ │ ├── Extensions.cs
│ │ │ │ ├── JsonSerializerUtcEx.cs
│ │ │ │ ├── LocalizedTextEx.cs
│ │ │ │ ├── NodeIdEx.cs
│ │ │ │ ├── QualifiedNameEx.cs
│ │ │ │ ├── StatusCodeEx.cs
│ │ │ │ └── TypeInfoEx.cs
│ │ │ ├── IVariantEncoder.cs
│ │ │ ├── IVariantEncoderFactory.cs
│ │ │ ├── JsonDecoderEx.cs
│ │ │ ├── JsonEncoderEx.cs
│ │ │ ├── JsonVariantEncoder.cs
│ │ │ ├── MessageSchemaTypes.cs
│ │ │ ├── Models
│ │ │ │ ├── DataSet.cs
│ │ │ │ ├── EncodeableDictionary.cs
│ │ │ │ ├── EncodeableJToken.cs
│ │ │ │ ├── EncodeableVariantValue.cs
│ │ │ │ └── KeyDataValuePair.cs
│ │ │ ├── PubSub
│ │ │ │ ├── AvroDataSetMessage.cs
│ │ │ │ ├── AvroNetworkMessage.cs
│ │ │ │ ├── BaseDataSetMessage.cs
│ │ │ │ ├── BaseNetworkMessage.cs
│ │ │ │ ├── EncoderExtensions.cs
│ │ │ │ ├── IDataSetMetaDataResolver.cs
│ │ │ │ ├── JsonDataSetMessage.cs
│ │ │ │ ├── JsonMetadataMessage.cs
│ │ │ │ ├── JsonNetworkMessage.cs
│ │ │ │ ├── MessageType.cs
│ │ │ │ ├── MonitoredItemMessage.cs
│ │ │ │ ├── PubSubMessage.cs
│ │ │ │ ├── StackExtensions.cs
│ │ │ │ ├── UadpDataSetMessage.cs
│ │ │ │ ├── UadpDiscoveryMessage.cs
│ │ │ │ ├── UadpMetadataMessage.cs
│ │ │ │ └── UadpNetworkMessage.cs
│ │ │ ├── Schemas
│ │ │ │ ├── Avro
│ │ │ │ │ ├── AvroBuiltInSchemas.cs
│ │ │ │ │ ├── AvroDataSet.cs
│ │ │ │ │ ├── AvroDataSetMessage.cs
│ │ │ │ │ ├── AvroNetworkMessage.cs
│ │ │ │ │ ├── AvroSchema.cs
│ │ │ │ │ ├── BaseDataSetMessage.cs
│ │ │ │ │ ├── BaseNetworkMessage.cs
│ │ │ │ │ ├── IAvroSchema.cs
│ │ │ │ │ ├── JsonBuiltInSchemas.cs
│ │ │ │ │ ├── JsonDataSet.cs
│ │ │ │ │ ├── JsonDataSetMessage.cs
│ │ │ │ │ ├── JsonNetworkMessage.cs
│ │ │ │ │ └── MonitoredItemMessage.cs
│ │ │ │ ├── BaseBuiltInSchemas.cs
│ │ │ │ ├── BaseDataSetSchema.cs
│ │ │ │ ├── Json
│ │ │ │ │ ├── JsonBuiltInSchemas.cs
│ │ │ │ │ ├── JsonDataSet.cs
│ │ │ │ │ ├── JsonDataSetMessage.cs
│ │ │ │ │ ├── JsonNetworkMessage.cs
│ │ │ │ │ ├── JsonSchema.cs
│ │ │ │ │ ├── JsonSchemaExtensions.cs
│ │ │ │ │ ├── JsonSchemaVersion.cs
│ │ │ │ │ ├── JsonSchemaVocabulary.cs
│ │ │ │ │ ├── JsonSchemaWriter.cs
│ │ │ │ │ └── MonitoredItemMessage.cs
│ │ │ │ ├── SchemaOptions.cs
│ │ │ │ ├── SchemaRank.cs
│ │ │ │ ├── SchemaUtils.cs
│ │ │ │ └── Uadp
│ │ │ │ │ └── UadpNetworkMessage.cs
│ │ │ ├── Utils
│ │ │ │ └── TypeMaps.cs
│ │ │ ├── VariantEncoderFactory.cs
│ │ │ ├── ZipFileReader.cs
│ │ │ └── ZipFileWriter.cs
│ │ ├── Exceptions
│ │ │ ├── ConnectionException.cs
│ │ │ └── ServerBusyException.cs
│ │ ├── Extensions
│ │ │ ├── LinqEx.cs
│ │ │ ├── StreamEx.cs
│ │ │ ├── StringEx.cs
│ │ │ └── TimerEx.cs
│ │ ├── IMetricsContext.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ └── Publisher
│ │ │ ├── Diagnostics.cs
│ │ │ ├── Extensions
│ │ │ ├── AggregateConfigurationModelEx.cs
│ │ │ ├── AggregateFilterModelEx.cs
│ │ │ ├── ApplicationInfoModelEx.cs
│ │ │ ├── ApplicationRegistrationModelEx.cs
│ │ │ ├── AuthenticationMethodModelEx.cs
│ │ │ ├── ConditionHandlingOptionsModelEx.cs
│ │ │ ├── ConnectionModelEx.cs
│ │ │ ├── ContentFilterElementModelEx.cs
│ │ │ ├── ContentFilterModelEx.cs
│ │ │ ├── CredentialModelEx.cs
│ │ │ ├── DataChangeFilterModelEx.cs
│ │ │ ├── DataSetMetaDataModelEx.cs
│ │ │ ├── DataSetWriterModelEx.cs
│ │ │ ├── DiagnosticsModelEx.cs
│ │ │ ├── DiscovererModelEx.cs
│ │ │ ├── DiscoveryConfigModelEx.cs
│ │ │ ├── DiscoveryRequestModelEx.cs
│ │ │ ├── EndpointInfoModelEx.cs
│ │ │ ├── EndpointModelEx.cs
│ │ │ ├── EndpointRegistrationModelEx.cs
│ │ │ ├── EventFilterModelEx.cs
│ │ │ ├── FileSystemServicesEx.cs
│ │ │ ├── FilterOperandModelEx.cs
│ │ │ ├── ModelChangeHandlingOptionsModelEx.cs
│ │ │ ├── NodeServicesEx.cs
│ │ │ ├── OpcNodeModelEx.cs
│ │ │ ├── PublishedDataItemsModelEx.cs
│ │ │ ├── PublishedDataSetEventModelEx.cs
│ │ │ ├── PublishedDataSetModelEx.cs
│ │ │ ├── PublishedDataSetSettingsModelEx.cs
│ │ │ ├── PublishedDataSetSourceModelEx.cs
│ │ │ ├── PublishedDataSetTriggerModelEx.cs
│ │ │ ├── PublishedDataSetVariableModelEx.cs
│ │ │ ├── PublishedEventItemsModelEx.cs
│ │ │ ├── PublishedNodesEntryModelEx.cs
│ │ │ ├── RegistryOperationContextModelEx.cs
│ │ │ ├── SimpleAttributeOperandModelEx.cs
│ │ │ ├── SupervisorModelEx.cs
│ │ │ ├── UserIdentityModelEx.cs
│ │ │ ├── X509CertificateChainModelEx.cs
│ │ │ └── X509CertificateModelEx.cs
│ │ │ ├── ICertificateServices.cs
│ │ │ ├── IConnectionServices.cs
│ │ │ ├── IFileSystemServices.cs
│ │ │ ├── IHistoryServices.cs
│ │ │ ├── INetworkDiscovery.cs
│ │ │ ├── INodeServices.cs
│ │ │ ├── IPublishServices.cs
│ │ │ ├── IServerDiscovery.cs
│ │ │ └── Runtime.cs
│ └── tests
│ │ ├── Azure.IIoT.OpcUa.Tests.csproj
│ │ ├── Encoders
│ │ ├── AvroBaseTests.cs
│ │ ├── AvroDataSetTests.cs
│ │ ├── AvroEncoderTests.cs
│ │ ├── AvroFileWriterTests.cs
│ │ ├── Extensions
│ │ │ ├── ExpandedNodeIdExTests.cs
│ │ │ ├── LocalizedTextExTests.cs
│ │ │ ├── NodeIdExTests.cs
│ │ │ ├── QualifiedNameExTests.cs
│ │ │ └── TypeInfoExTests.cs
│ │ ├── JsonDataSetTests.cs
│ │ ├── Models
│ │ │ └── EncodeableDictionaryTests.cs
│ │ ├── PubSub
│ │ │ ├── AvroNetworkMessageEncoderDecoderTests1.cs
│ │ │ ├── AvroNetworkMessageEncoderDecoderTests2.cs
│ │ │ ├── AvroNetworkMessageFileWriterReaderTests.cs
│ │ │ ├── JsonNetworkMessageEncoderDecoderTests.cs
│ │ │ ├── JsonNetworkMessageEncoderTests1.cs
│ │ │ ├── JsonNetworkMessageEncoderTests2.cs
│ │ │ ├── MonitoredItemMessageEncoderDecoderTests.cs
│ │ │ ├── PubSubMessageContentFlagHelper.cs
│ │ │ └── UadpNetworkMessageEncoderDecoderTests.cs
│ │ ├── SchemaUtilsTests.cs
│ │ ├── Schemas
│ │ │ ├── AvroNetworkMessageAvroSchemaTests.cs
│ │ │ ├── AvroSchema
│ │ │ │ ├── Default
│ │ │ │ │ ├── CyclicReads.json
│ │ │ │ │ ├── KeepAlive.json
│ │ │ │ │ ├── KeyFrames.json
│ │ │ │ │ ├── PendingAlarms.json
│ │ │ │ │ ├── PlcSimulation.json
│ │ │ │ │ └── SimpleEvents.json
│ │ │ │ ├── Multiple
│ │ │ │ │ ├── CyclicReads.json
│ │ │ │ │ ├── KeepAlive.json
│ │ │ │ │ ├── KeyFrames.json
│ │ │ │ │ ├── PendingAlarms.json
│ │ │ │ │ ├── PlcSimulation.json
│ │ │ │ │ └── SimpleEvents.json
│ │ │ │ ├── NetworkMessage
│ │ │ │ │ ├── CyclicReads.json
│ │ │ │ │ ├── KeepAlive.json
│ │ │ │ │ ├── KeyFrames.json
│ │ │ │ │ ├── PendingAlarms.json
│ │ │ │ │ ├── PlcSimulation.json
│ │ │ │ │ └── SimpleEvents.json
│ │ │ │ ├── NetworkMessageDefault
│ │ │ │ │ ├── CyclicReads.json
│ │ │ │ │ ├── KeepAlive.json
│ │ │ │ │ ├── KeyFrames.json
│ │ │ │ │ ├── PendingAlarms.json
│ │ │ │ │ ├── PlcSimulation.json
│ │ │ │ │ └── SimpleEvents.json
│ │ │ │ ├── Raw
│ │ │ │ │ ├── CyclicReads.json
│ │ │ │ │ ├── KeepAlive.json
│ │ │ │ │ ├── KeyFrames.json
│ │ │ │ │ ├── PendingAlarms.json
│ │ │ │ │ ├── PlcSimulation.json
│ │ │ │ │ └── SimpleEvents.json
│ │ │ │ ├── RawReversible
│ │ │ │ │ ├── CyclicReads.json
│ │ │ │ │ ├── KeepAlive.json
│ │ │ │ │ ├── KeyFrames.json
│ │ │ │ │ ├── PendingAlarms.json
│ │ │ │ │ ├── PlcSimulation.json
│ │ │ │ │ └── SimpleEvents.json
│ │ │ │ └── Single
│ │ │ │ │ ├── CyclicReads.json
│ │ │ │ │ ├── KeepAlive.json
│ │ │ │ │ ├── KeyFrames.json
│ │ │ │ │ ├── PendingAlarms.json
│ │ │ │ │ ├── PlcSimulation.json
│ │ │ │ │ └── SimpleEvents.json
│ │ │ ├── JavroSchema
│ │ │ │ ├── Default
│ │ │ │ │ ├── CyclicReads.json
│ │ │ │ │ ├── KeepAlive.json
│ │ │ │ │ ├── KeyFrames.json
│ │ │ │ │ ├── PendingAlarms.json
│ │ │ │ │ ├── PlcSimulation.json
│ │ │ │ │ └── SimpleEvents.json
│ │ │ │ ├── Multiple
│ │ │ │ │ ├── CyclicReads.json
│ │ │ │ │ ├── KeepAlive.json
│ │ │ │ │ ├── KeyFrames.json
│ │ │ │ │ ├── PendingAlarms.json
│ │ │ │ │ ├── PlcSimulation.json
│ │ │ │ │ └── SimpleEvents.json
│ │ │ │ ├── NetworkMessage
│ │ │ │ │ ├── CyclicReads.json
│ │ │ │ │ ├── KeepAlive.json
│ │ │ │ │ ├── KeyFrames.json
│ │ │ │ │ ├── PendingAlarms.json
│ │ │ │ │ ├── PlcSimulation.json
│ │ │ │ │ └── SimpleEvents.json
│ │ │ │ ├── NetworkMessageDefault
│ │ │ │ │ ├── CyclicReads.json
│ │ │ │ │ ├── KeepAlive.json
│ │ │ │ │ ├── KeyFrames.json
│ │ │ │ │ ├── PendingAlarms.json
│ │ │ │ │ ├── PlcSimulation.json
│ │ │ │ │ └── SimpleEvents.json
│ │ │ │ ├── Raw
│ │ │ │ │ ├── CyclicReads.json
│ │ │ │ │ ├── KeepAlive.json
│ │ │ │ │ ├── KeyFrames.json
│ │ │ │ │ ├── PendingAlarms.json
│ │ │ │ │ ├── PlcSimulation.json
│ │ │ │ │ └── SimpleEvents.json
│ │ │ │ ├── RawReversible
│ │ │ │ │ ├── CyclicReads.json
│ │ │ │ │ ├── KeepAlive.json
│ │ │ │ │ ├── KeyFrames.json
│ │ │ │ │ ├── PendingAlarms.json
│ │ │ │ │ ├── PlcSimulation.json
│ │ │ │ │ └── SimpleEvents.json
│ │ │ │ ├── Samples
│ │ │ │ │ ├── CyclicReads.json
│ │ │ │ │ ├── KeepAlive.json
│ │ │ │ │ ├── KeyFrames.json
│ │ │ │ │ ├── PendingAlarms.json
│ │ │ │ │ ├── PlcSimulation.json
│ │ │ │ │ └── SimpleEvents.json
│ │ │ │ ├── SamplesRaw
│ │ │ │ │ ├── CyclicReads.json
│ │ │ │ │ ├── KeepAlive.json
│ │ │ │ │ ├── KeyFrames.json
│ │ │ │ │ ├── PendingAlarms.json
│ │ │ │ │ ├── PlcSimulation.json
│ │ │ │ │ └── SimpleEvents.json
│ │ │ │ └── Single
│ │ │ │ │ ├── CyclicReads.json
│ │ │ │ │ ├── KeepAlive.json
│ │ │ │ │ ├── KeyFrames.json
│ │ │ │ │ ├── PendingAlarms.json
│ │ │ │ │ ├── PlcSimulation.json
│ │ │ │ │ └── SimpleEvents.json
│ │ │ ├── JsonNetworkMessageAvroSchemaTests.cs
│ │ │ ├── JsonNetworkMessageJsonSchemaTests.cs
│ │ │ └── JsonSchema
│ │ │ │ ├── Default
│ │ │ │ ├── CyclicReads.json
│ │ │ │ ├── KeepAlive.json
│ │ │ │ ├── KeyFrames.json
│ │ │ │ ├── PendingAlarms.json
│ │ │ │ ├── PlcSimulation.json
│ │ │ │ └── SimpleEvents.json
│ │ │ │ ├── Multiple
│ │ │ │ ├── CyclicReads.json
│ │ │ │ ├── KeepAlive.json
│ │ │ │ ├── KeyFrames.json
│ │ │ │ ├── PendingAlarms.json
│ │ │ │ ├── PlcSimulation.json
│ │ │ │ └── SimpleEvents.json
│ │ │ │ ├── NetworkMessage
│ │ │ │ ├── CyclicReads.json
│ │ │ │ ├── KeepAlive.json
│ │ │ │ ├── KeyFrames.json
│ │ │ │ ├── PendingAlarms.json
│ │ │ │ ├── PlcSimulation.json
│ │ │ │ └── SimpleEvents.json
│ │ │ │ ├── NetworkMessageDefault
│ │ │ │ ├── CyclicReads.json
│ │ │ │ ├── KeepAlive.json
│ │ │ │ ├── KeyFrames.json
│ │ │ │ ├── PendingAlarms.json
│ │ │ │ ├── PlcSimulation.json
│ │ │ │ └── SimpleEvents.json
│ │ │ │ ├── Raw
│ │ │ │ ├── CyclicReads.json
│ │ │ │ ├── KeepAlive.json
│ │ │ │ ├── KeyFrames.json
│ │ │ │ ├── PendingAlarms.json
│ │ │ │ ├── PlcSimulation.json
│ │ │ │ └── SimpleEvents.json
│ │ │ │ ├── RawReversible
│ │ │ │ ├── CyclicReads.json
│ │ │ │ ├── KeepAlive.json
│ │ │ │ ├── KeyFrames.json
│ │ │ │ ├── PendingAlarms.json
│ │ │ │ ├── PlcSimulation.json
│ │ │ │ └── SimpleEvents.json
│ │ │ │ ├── Samples
│ │ │ │ ├── CyclicReads.json
│ │ │ │ ├── KeepAlive.json
│ │ │ │ ├── KeyFrames.json
│ │ │ │ ├── PendingAlarms.json
│ │ │ │ ├── PlcSimulation.json
│ │ │ │ └── SimpleEvents.json
│ │ │ │ ├── SamplesRaw
│ │ │ │ ├── CyclicReads.json
│ │ │ │ ├── KeepAlive.json
│ │ │ │ ├── KeyFrames.json
│ │ │ │ ├── PendingAlarms.json
│ │ │ │ ├── PlcSimulation.json
│ │ │ │ └── SimpleEvents.json
│ │ │ │ └── Single
│ │ │ │ ├── CyclicReads.json
│ │ │ │ ├── KeepAlive.json
│ │ │ │ ├── KeyFrames.json
│ │ │ │ ├── PendingAlarms.json
│ │ │ │ ├── PlcSimulation.json
│ │ │ │ └── SimpleEvents.json
│ │ ├── Services
│ │ │ ├── VariantEncoderBooleanTests.cs
│ │ │ ├── VariantEncoderByteTests.cs
│ │ │ ├── VariantEncoderDoubleTests.cs
│ │ │ ├── VariantEncoderEx.cs
│ │ │ ├── VariantEncoderFloatTests.cs
│ │ │ ├── VariantEncoderInt16Tests.cs
│ │ │ ├── VariantEncoderInt32Tests.cs
│ │ │ ├── VariantEncoderInt64Tests.cs
│ │ │ ├── VariantEncoderMiscTests.cs
│ │ │ ├── VariantEncoderSByteTests.cs
│ │ │ ├── VariantEncoderStringTests.cs
│ │ │ ├── VariantEncoderUInt16Tests.cs
│ │ │ ├── VariantEncoderUInt32Tests.cs
│ │ │ └── VariantEncoderUInt64Tests.cs
│ │ ├── VariantVariants.cs
│ │ └── ZipFileWriterTests.cs
│ │ ├── GlobalSuppressions.cs
│ │ ├── Publisher
│ │ ├── Extensions
│ │ │ └── OpcNodeModelExTests.cs
│ │ └── Models
│ │ │ └── PublishedNodesEntryModelTests.cs
│ │ └── Resources
│ │ ├── CyclicReads.json
│ │ ├── KeepAlive.json
│ │ ├── KeyFrames.json
│ │ ├── PendingAlarms.json
│ │ ├── PlcSimulation.json
│ │ └── SimpleEvents.json
└── Directory.Build.props
├── testenvironments.json
├── tools
├── checkdocs.cmd
├── clean.sh
├── codecoverage.cmd
├── docgen.cmd
├── e2etesting
│ ├── DeployAKS.ps1
│ ├── DeployEdge.ps1
│ ├── DeployPLCs.ps1
│ ├── DeployStandalone.ps1
│ ├── DeployTestResources.ps1
│ ├── DetermineKeyVaultName.ps1
│ ├── GetSecrets.ps1
│ ├── SetKeyVaultPermissions.ps1
│ ├── SetKeyVaultSecrets.ps1
│ ├── SetVariables.ps1
│ └── steps
│ │ ├── cleanup.yml
│ │ ├── deployplatform.yml
│ │ ├── deploystandalone.yml
│ │ ├── deploytestresources.yml
│ │ └── runtests.yml
├── scripts
│ ├── .gitignore
│ ├── acr-copy-release.ps1
│ ├── acr-deprecate-releases.ps1
│ ├── acr-prune.ps1
│ ├── acr-scan.ps1
│ ├── build.ps1
│ ├── dockerize.ps1
│ ├── get-root.ps1
│ ├── get-version.ps1
│ └── set-version.ps1
└── swagger.cmd
└── version.json
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | * @Azure/azure-industrial-iot
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12 |
13 | **Describe the solution you'd like**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Describe alternatives you've considered**
17 | A clear and concise description of any alternative solutions or features you've considered.
18 |
19 | **Additional context**
20 | Add any other context or screenshots about the feature request here.
21 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | # To get started with Dependabot version updates, you'll need to specify which
2 | # package ecosystems to update and where the package manifests are located.
3 | # Please see the documentation for all configuration options:
4 | # https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
5 |
6 | version: 2
7 | updates:
8 | - package-ecosystem: "nuget"
9 | directory: "/" # Location of package manifests
10 | schedule:
11 | interval: "daily"
12 | open-pull-requests-limit: 25
13 | # Raise pull requests in worker branch nuget
14 | target-branch: "main"
15 |
--------------------------------------------------------------------------------
/.github/workflows/dotnet.yml:
--------------------------------------------------------------------------------
1 | name: Build Solutions
2 | on:
3 | push:
4 | branches: [ "latest", "main" ]
5 | pull_request:
6 | branches: [ "latest", "main" ]
7 | jobs:
8 | build:
9 | runs-on: ubuntu-latest
10 | strategy:
11 | matrix:
12 | solution:
13 | - '**/*.sln'
14 | steps:
15 | - name: Checkout repository
16 | uses: actions/checkout@v4
17 | with:
18 | fetch-depth: 0
19 | - name: Setup .NET
20 | uses: actions/setup-dotnet@v3
21 | with:
22 | dotnet-version: 9.0.x
23 | - name: Restore dependencies
24 | run: dotnet restore ${{ matrix.solution }} -s https://api.nuget.org/v3/index.json
25 | - name: Build
26 | run: dotnet build ${{ matrix.solution }} --configuration Release --no-restore
27 |
--------------------------------------------------------------------------------
/.github/workflows/test.yml:
--------------------------------------------------------------------------------
1 | name: Build and Test
2 | on:
3 | push:
4 | branches: [ "latest", "main" ]
5 | pull_request:
6 | branches: [ "latest", "main" ]
7 | jobs:
8 | build:
9 | runs-on: ${{ matrix.os }}
10 | strategy:
11 | matrix:
12 | os: [ubuntu-latest, windows-latest]
13 | steps:
14 | - uses: actions/checkout@v4
15 | with:
16 | fetch-depth: 0
17 | - name: Setup .NET
18 | uses: actions/setup-dotnet@v4
19 | with:
20 | dotnet-version: 9.0.x
21 | - name: Restore dependencies
22 | run: dotnet restore -s https://api.nuget.org/v3/index.json
23 | - name: Build
24 | run: dotnet build --no-restore
25 | - name: Test
26 | run: dotnet test --no-build --verbosity normal
27 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /**/*.user
2 | /**/*.cache
3 | /**/*.user.json
4 | /**/*.nupkg
5 | /**/obj/**
6 | /**/.vs
7 | /**/bin/**
8 | /**/pki/**
9 | /**/csx/**
10 | /**/ecf/**
11 | /**/*.log
12 | /**/*.err
13 | /**/*.sdf
14 | /**/*.rsa
15 | /**/*.opendb
16 | /**/*.opensdf
17 | /**/*.vc.db
18 | /.vscode/**
19 | /build/**
20 | *.sarif
21 | *.dll
22 | *.so
23 | *.pdb
24 | *.der
25 | *.pfx
26 | *.exe
27 | /src/out
28 | /src/Logs
29 | /_tmpout/**
30 | /TestResults/**
31 | /**/TestResults/**
32 | /**/packages/**
33 | /**/appsettings.*.json
34 | .env
35 | *.crt
36 | *.key
37 | *.user
38 | *.cache
39 | CodeCoverage
40 | coverage.cobertura.xml
41 | /api/csharp-api/api/*.yml
42 | /api/csharp-api/api/*.manifest
43 | /api/csharp-api/_site
44 | node_modules
45 | .sonarqube/**
46 |
--------------------------------------------------------------------------------
/.sscignore:
--------------------------------------------------------------------------------
1 | { "cfs": ["CFS0001", "CFS0013"] }
--------------------------------------------------------------------------------
/CODEOWNERS:
--------------------------------------------------------------------------------
1 | # Always ensure to include industrial-iot-pr for every item that follows.
2 | * @Azure/industrial-iot-pr
3 |
4 | # Only exception is doc updates
5 | /docs/ @Azure/azure-industrial-iot
6 |
--------------------------------------------------------------------------------
/Nuget.Config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/deploy/docker/build.cmd:
--------------------------------------------------------------------------------
1 | @echo off
2 | setlocal
3 |
4 | set CMDLINE=--self-contained false /t:PublishContainer -r linux-x64
5 | set PROJECT=../../src/Azure.IIoT.OpcUa.Publisher.Module/src/Azure.IIoT.OpcUa.Publisher.Module.csproj
6 |
7 | dotnet restore %PROJECT% -s https://api.nuget.org/v3/index.json
8 | dotnet publish %PROJECT% -c Release %CMDLINE% /p:ContainerImageTag=latest
9 | dotnet publish %PROJECT% -c Debug %CMDLINE% /p:ContainerImageTag=debug
10 |
--------------------------------------------------------------------------------
/deploy/docker/dapr/pubsub.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: dapr.io/v1alpha1
2 | kind: Component
3 | metadata:
4 | name: redis-pubsub
5 | spec:
6 | type: pubsub.redis
7 | version: v1
8 | metadata:
9 | - name: redisHost
10 | value: redis:6379
--------------------------------------------------------------------------------
/deploy/docker/dapr/statestore.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: dapr.io/v1alpha1
2 | kind: Component
3 | metadata:
4 | name: statestore
5 | spec:
6 | type: state.redis
7 | version: v1
8 | metadata:
9 | - name: redisHost
10 | value: redis:6379
11 | - name: redisPassword
12 | value: ""
13 | - name: actorStateStore
14 | value: "true"
15 |
--------------------------------------------------------------------------------
/deploy/docker/mosquitto/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "ConnectionManager_connections": {
3 | "mosquitto": {
4 | "configVersion": 1,
5 | "certValidation": false,
6 | "clientId": "mqtt-explorer",
7 | "id": "6b3e0a76-c99d-464d-a74c-9c0d1c483edf",
8 | "name": "mosquitto",
9 | "encryption": false,
10 | "subscriptions": [
11 | {
12 | "topic": "#",
13 | "qos": 0
14 | },
15 | {
16 | "topic": "$SYS/#",
17 | "qos": 0
18 | }
19 | ],
20 | "type": "mqtt",
21 | "host": "mosquitto",
22 | "port": 1883,
23 | "protocol": "mqtt"
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/deploy/docker/opentelemetry/collector.yaml:
--------------------------------------------------------------------------------
1 | receivers:
2 | otlp:
3 | protocols:
4 | grpc:
5 | http:
6 | exporters:
7 | prometheus:
8 | endpoint: 0.0.0.0:8889
9 | otlp:
10 | endpoint: tempo:4317
11 | tls:
12 | insecure: true
13 | loki:
14 | endpoint: http://loki:3100/loki/api/v1/push
15 | format: json
16 | labels:
17 | resource:
18 | service.name: "service_name"
19 | service.instance.id: "service_instance_id"
20 | service:
21 | pipelines:
22 | metrics:
23 | receivers: [ otlp ]
24 | exporters: [ prometheus ]
25 | traces:
26 | receivers: [ otlp ]
27 | exporters: [ otlp ]
28 | logs:
29 | receivers: [ otlp ]
30 | exporters: [ loki ]
--------------------------------------------------------------------------------
/deploy/docker/opentelemetry/dashboards.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: 1
2 | providers:
3 | - name: dashboards
4 | type: file
5 | options:
6 | path: /etc/dashboards
7 | foldersFromFilesStructure: true
--------------------------------------------------------------------------------
/deploy/docker/opentelemetry/prometheus.yml:
--------------------------------------------------------------------------------
1 | global:
2 | scrape_interval: 5s # Set the scrape interval to every 5 seconds. Default is every 1 minute.
3 | evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
4 | # scrape_timeout is set to the global default (10s).
5 | alerting:
6 | alertmanagers:
7 | - static_configs:
8 | - targets:
9 | # - alertmanager:9093
10 | scrape_configs:
11 | - job_name: 'prometheus'
12 | static_configs:
13 | - targets: ['localhost:9090']
14 | - job_name: 'collector'
15 | static_configs:
16 | - targets: ['collector:8889']
--------------------------------------------------------------------------------
/deploy/docker/opentelemetry/tempo.yaml:
--------------------------------------------------------------------------------
1 | server:
2 | http_listen_port: 3200
3 | distributor:
4 | receivers:
5 | otlp:
6 | protocols:
7 | http:
8 | grpc:
9 | storage:
10 | trace:
11 | backend: local
12 | local:
13 | path: /tmp/tempo/blocks
--------------------------------------------------------------------------------
/deploy/docker/publisher_secrets.txt:
--------------------------------------------------------------------------------
1 | ApiKey=myKey1
--------------------------------------------------------------------------------
/deploy/docker/with-limits.yaml:
--------------------------------------------------------------------------------
1 | services:
2 | ############################
3 | # OPC PLC Simulation
4 | ############################
5 | opcplc:
6 | command: [
7 | "--sph",
8 | "--spf=/shared/pn.json",
9 | "--pn=50000",
10 | "--fn=1",
11 | "--sn=0",
12 | "--gn=0",
13 | "--nd",
14 | "--nn",
15 | "--ns",
16 | "--np",
17 | "--nv",
18 | "--aa"
19 | ]
20 | ############################
21 | # OPC Publisher
22 | ############################
23 | publisher:
24 | cpus: "0.5"
25 | mem_limit: 100m
26 | environment:
27 | EnableMetrics: false
28 | MaxNetworkMessageSendQueueSize: 4
29 | DOTNET_ReadyToRun: 1
30 | DOTNET_TieredPGO: 0
31 | DOTNET_TC_QuickJitForLoops: 0
32 | DOTNET_GCConserveMemory: 9
33 | DOTNET_GCHeapHardLimitPercent: 30
34 |
--------------------------------------------------------------------------------
/deploy/docker/with-localimage.yaml:
--------------------------------------------------------------------------------
1 | services:
2 | publisher:
3 | image: iotedge/opc-publisher:${OPC_PUBLISHER_TAG:-latest}
4 |
--------------------------------------------------------------------------------
/deploy/docker/with-localvolume.yaml:
--------------------------------------------------------------------------------
1 | services:
2 | publisher:
3 | environment:
4 | PublishedNodesFile: /shared/pn.json
5 | UseFileChangePolling: True
6 | volumes:
7 | - shared:/shared:rw
8 | volumes:
9 | shared:
10 | driver: local
11 | driver_opts:
12 | type: none
13 | device: c:\Shared
14 | o: bind
--------------------------------------------------------------------------------
/deploy/docker/with-pcap-capture.yaml:
--------------------------------------------------------------------------------
1 | services:
2 | ############################
3 | # OPC PLC Simulation
4 | ############################
5 | opcplc:
6 | command: [
7 | "--sph=True",
8 | "--spf=/shared/pn.json",
9 | "--pn=50000",
10 | "--fn=8000",
11 | "--aa=True",
12 | "--ut=True"
13 | ]
14 | ############################
15 | # Network capture
16 | ############################
17 | pcap:
18 | container_name: pcap
19 | image: travelping/pcap
20 | cap_add:
21 | - NET_ADMIN
22 | network_mode: host
23 | volumes:
24 | - shared:/data:rw
25 | environment:
26 | IFACE: any
27 | FORMAT: pcapng
28 | MAXFILENUM: 10
29 | MAXFILESIZE: 200
30 | FILENAME: dump.pcap
31 | FILTER: "src or dst host 192.168.80.2"
32 | volumes:
33 | shared:
34 |
--------------------------------------------------------------------------------
/deploy/iotedge/.gitignore:
--------------------------------------------------------------------------------
1 | eflow-setup/*
2 | *.log
--------------------------------------------------------------------------------
/deploy/scripts/.gitignore:
--------------------------------------------------------------------------------
1 | .user
2 | .app
3 | .env
4 |
--------------------------------------------------------------------------------
/deploy/scripts/default.yml:
--------------------------------------------------------------------------------
1 | version: '3'
2 | services:
3 | opcserver0:
4 | image: mcr.microsoft.com/iotedge/opc-plc:latest
5 | restart: always
6 | command: --aa -pn 51200 -fn 50 -fr 1 -sn 250 -sr 10
7 | ports:
8 | - "51200:51200"
9 | opcserver1:
10 | image: mcr.microsoft.com/iotedge/opc-plc:latest
11 | restart: always
12 | command: --aa -pn 51200 -fn 50 -fr 1 -sn 250 -sr 10
13 | ports:
14 | - "51201:51201"
15 | opcserver2:
16 | image: mcr.microsoft.com/iotedge/opc-plc:latest
17 | restart: always
18 | command: --aa -pn 51200 -fn 50 -fr 1 -sn 250 -sr 10
19 | ports:
20 | - "51202:51202"
21 |
--------------------------------------------------------------------------------
/deploy/scripts/dsc-install.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/deploy/scripts/dsc-install.zip
--------------------------------------------------------------------------------
/docs/_config.yml:
--------------------------------------------------------------------------------
1 | remote_theme: MicrosoftLearning/Jekyll-Theme
2 |
--------------------------------------------------------------------------------
/docs/helm/azure-industrial-iot-0.1.0.tgz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/helm/azure-industrial-iot-0.1.0.tgz
--------------------------------------------------------------------------------
/docs/helm/azure-industrial-iot-0.2.0.tgz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/helm/azure-industrial-iot-0.2.0.tgz
--------------------------------------------------------------------------------
/docs/helm/azure-industrial-iot-0.3.0.tgz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/helm/azure-industrial-iot-0.3.0.tgz
--------------------------------------------------------------------------------
/docs/helm/azure-industrial-iot-0.3.1.tgz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/helm/azure-industrial-iot-0.3.1.tgz
--------------------------------------------------------------------------------
/docs/helm/azure-industrial-iot-0.3.2.tgz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/helm/azure-industrial-iot-0.3.2.tgz
--------------------------------------------------------------------------------
/docs/helm/azure-industrial-iot-0.4.0.tgz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/helm/azure-industrial-iot-0.4.0.tgz
--------------------------------------------------------------------------------
/docs/helm/azure-industrial-iot-0.4.1.tgz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/helm/azure-industrial-iot-0.4.1.tgz
--------------------------------------------------------------------------------
/docs/helm/azure-industrial-iot-0.4.2.tgz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/helm/azure-industrial-iot-0.4.2.tgz
--------------------------------------------------------------------------------
/docs/helm/azure-industrial-iot-0.4.3.tgz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/helm/azure-industrial-iot-0.4.3.tgz
--------------------------------------------------------------------------------
/docs/helm/azure-industrial-iot-0.4.4.tgz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/helm/azure-industrial-iot-0.4.4.tgz
--------------------------------------------------------------------------------
/docs/helm/readme.md:
--------------------------------------------------------------------------------
1 | # Helm Chart Repository
2 |
3 | This page hosts Helm chart repository for `azure-industrial-iot` chart.
4 |
5 | For details about how to consume from it please consult `https://azure.github.io/Industrial-IoT/helm` section in
6 | [Deploying Azure Industrial IoT Platform Microservices Using Helm](../deploy/howto-deploy-helm.md).
7 |
--------------------------------------------------------------------------------
/docs/media/architecture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/media/architecture.png
--------------------------------------------------------------------------------
/docs/media/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/media/icon.png
--------------------------------------------------------------------------------
/docs/media/microsoft-symbol.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/media/microsoft-symbol.png
--------------------------------------------------------------------------------
/docs/opc-publisher/media/01.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/01.JPG
--------------------------------------------------------------------------------
/docs/opc-publisher/media/02.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/02.JPG
--------------------------------------------------------------------------------
/docs/opc-publisher/media/03.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/03.JPG
--------------------------------------------------------------------------------
/docs/opc-publisher/media/04.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/04.JPG
--------------------------------------------------------------------------------
/docs/opc-publisher/media/05.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/05.JPG
--------------------------------------------------------------------------------
/docs/opc-publisher/media/06.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/06.JPG
--------------------------------------------------------------------------------
/docs/opc-publisher/media/07.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/07.JPG
--------------------------------------------------------------------------------
/docs/opc-publisher/media/08.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/08.JPG
--------------------------------------------------------------------------------
/docs/opc-publisher/media/09.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/09.JPG
--------------------------------------------------------------------------------
/docs/opc-publisher/media/10.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/10.JPG
--------------------------------------------------------------------------------
/docs/opc-publisher/media/11.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/11.JPG
--------------------------------------------------------------------------------
/docs/opc-publisher/media/12.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/12.JPG
--------------------------------------------------------------------------------
/docs/opc-publisher/media/13.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/13.JPG
--------------------------------------------------------------------------------
/docs/opc-publisher/media/14.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/14.JPG
--------------------------------------------------------------------------------
/docs/opc-publisher/media/15.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/15.JPG
--------------------------------------------------------------------------------
/docs/opc-publisher/media/image10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/image10.png
--------------------------------------------------------------------------------
/docs/opc-publisher/media/image11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/image11.png
--------------------------------------------------------------------------------
/docs/opc-publisher/media/image12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/image12.png
--------------------------------------------------------------------------------
/docs/opc-publisher/media/image13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/image13.png
--------------------------------------------------------------------------------
/docs/opc-publisher/media/image14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/image14.png
--------------------------------------------------------------------------------
/docs/opc-publisher/media/image26.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/image26.png
--------------------------------------------------------------------------------
/docs/opc-publisher/media/image27.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/image27.png
--------------------------------------------------------------------------------
/docs/opc-publisher/media/image28.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/image28.jpg
--------------------------------------------------------------------------------
/docs/opc-publisher/media/image28.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/image28.png
--------------------------------------------------------------------------------
/docs/opc-publisher/media/image29.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/image29.jpg
--------------------------------------------------------------------------------
/docs/opc-publisher/media/image29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/image29.png
--------------------------------------------------------------------------------
/docs/opc-publisher/media/image30.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/image30.png
--------------------------------------------------------------------------------
/docs/opc-publisher/media/image31.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/image31.png
--------------------------------------------------------------------------------
/docs/opc-publisher/media/image32.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/image32.jpg
--------------------------------------------------------------------------------
/docs/opc-publisher/media/image32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/image32.png
--------------------------------------------------------------------------------
/docs/opc-publisher/media/image33.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/image33.jpg
--------------------------------------------------------------------------------
/docs/opc-publisher/media/image33.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/image33.png
--------------------------------------------------------------------------------
/docs/opc-publisher/media/image34.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/image34.png
--------------------------------------------------------------------------------
/docs/opc-publisher/media/image9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/image9.png
--------------------------------------------------------------------------------
/docs/opc-publisher/media/keyset.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/keyset.png
--------------------------------------------------------------------------------
/docs/opc-publisher/media/keyset1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/keyset1.png
--------------------------------------------------------------------------------
/docs/opc-publisher/media/keyset2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/keyset2.png
--------------------------------------------------------------------------------
/docs/opc-publisher/media/keyset3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/keyset3.png
--------------------------------------------------------------------------------
/docs/opc-publisher/media/metrics.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/media/metrics.jpeg
--------------------------------------------------------------------------------
/docs/opc-publisher/metricsdashboard.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/opc-publisher/metricsdashboard.zip
--------------------------------------------------------------------------------
/docs/opc-publisher/security.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | ## Security
4 |
5 |
6 | ### oauth2
7 | Implicit oauth2 token flow.
8 |
9 | *Type* : oauth2
10 | *Flow* : implicit
11 |
--------------------------------------------------------------------------------
/docs/web-api/media/2-postmanenv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/web-api/media/2-postmanenv.png
--------------------------------------------------------------------------------
/docs/web-api/media/3-auth-edit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/web-api/media/3-auth-edit.png
--------------------------------------------------------------------------------
/docs/web-api/media/4-postmantoken.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/web-api/media/4-postmantoken.png
--------------------------------------------------------------------------------
/docs/web-api/media/deployment-succeeded.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/web-api/media/deployment-succeeded.png
--------------------------------------------------------------------------------
/docs/web-api/media/deployment1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/web-api/media/deployment1.png
--------------------------------------------------------------------------------
/docs/web-api/media/ex3-twinbrowsebyid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/web-api/media/ex3-twinbrowsebyid.png
--------------------------------------------------------------------------------
/docs/web-api/media/ex3-uriencode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/web-api/media/ex3-uriencode.png
--------------------------------------------------------------------------------
/docs/web-api/media/healthchecks.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/web-api/media/healthchecks.png
--------------------------------------------------------------------------------
/docs/web-api/media/image46.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/web-api/media/image46.png
--------------------------------------------------------------------------------
/docs/web-api/media/image47.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/web-api/media/image47.png
--------------------------------------------------------------------------------
/docs/web-api/media/image48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/web-api/media/image48.png
--------------------------------------------------------------------------------
/docs/web-api/media/image52.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/web-api/media/image52.png
--------------------------------------------------------------------------------
/docs/web-api/media/image53.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/web-api/media/image53.png
--------------------------------------------------------------------------------
/docs/web-api/media/postman-edit-collection.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/docs/web-api/media/postman-edit-collection.png
--------------------------------------------------------------------------------
/docs/web-api/security.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | ## Security
4 |
5 |
6 | ### oauth2
7 | Implicit oauth2 token flow.
8 |
9 | *Type* : oauth2
10 | *Flow* : implicit
11 |
--------------------------------------------------------------------------------
/e2e-tests/.gitignore:
--------------------------------------------------------------------------------
1 | .env
--------------------------------------------------------------------------------
/e2e-tests/Directory.Build.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/e2e-tests/IIoTPlatform-E2E-Tests/Config/IDeviceConfig.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace IIoTPlatformE2ETests.Config
7 | {
8 | ///
9 | /// IoT Edge device configuration
10 | ///
11 | public interface IDeviceConfig
12 | {
13 | ///
14 | /// IoT Edge device id
15 | ///
16 | string DeviceId { get; }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/e2e-tests/IIoTPlatform-E2E-Tests/Config/IIoTEdgeConfig.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace IIoTPlatformE2ETests.Config
7 | {
8 | ///
9 | /// IoT Edge configuration
10 | ///
11 | public interface IIoTEdgeConfig
12 | {
13 | ///
14 | /// IoT Edge version
15 | ///
16 | string EdgeVersion { get; }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/e2e-tests/IIoTPlatform-E2E-Tests/Config/IOpcPlcConfig.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace IIoTPlatformE2ETests.Config
7 | {
8 | public interface IOpcPlcConfig
9 | {
10 | ///
11 | /// Semicolon separated URLs to load published_nodes.json from OPC-PLCs
12 | ///
13 | string Urls { get; }
14 |
15 | ///
16 | /// Semicolon separated ip addresses of the OPC-PLCs
17 | ///
18 | string Ips { get; }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/e2e-tests/IIoTPlatform-E2E-Tests/Discovery/DiscoveryTestContext.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace IIoTPlatformE2ETests.Discovery
7 | {
8 | using IIoTPlatformE2ETests.TestExtensions;
9 |
10 | public class DiscoveryTestContext : IIoTPlatformTestContext
11 | {
12 | ///
13 | /// Initializes a new instance of the class.
14 | /// Used for preparation executed once before any tests of the collection are started.
15 | ///
16 | public DiscoveryTestContext()
17 | {
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/e2e-tests/IIoTPlatform-E2E-Tests/GlobalSuppressions.cs:
--------------------------------------------------------------------------------
1 | // This file is used by Code Analysis to maintain SuppressMessage
2 | // attributes that are applied to this project.
3 | // Project-level suppressions either have no target or are given
4 | // a specific target and scoped to a namespace, type, member, etc.
5 |
6 | using System.Diagnostics.CodeAnalysis;
7 |
8 | [assembly: SuppressMessage("Reliability", "CA2007:Consider calling ConfigureAwait on the awaited task", Justification = "xunit")]
9 |
--------------------------------------------------------------------------------
/e2e-tests/IIoTPlatform-E2E-Tests/TestExtensions/IIoTMultipleNodesTestCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace IIoTPlatformE2ETests.TestExtensions
7 | {
8 | using Xunit;
9 |
10 | [CollectionDefinition("IIoT Multiple Nodes Test Collection", DisableParallelization = true)]
11 | public class IIoTMultipleNodesTestCollection : ICollectionFixture
12 | {
13 | // This class has no code, and is never created. Its purpose is simply
14 | // to be the place to apply [CollectionDefinition] and all the
15 | // ICollectionFixture<> interfaces.
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/e2e-tests/IIoTPlatform-E2E-Tests/TestExtensions/IIoTPlatformTestCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace IIoTPlatformE2ETests.TestExtensions
7 | {
8 | using Xunit;
9 |
10 | [CollectionDefinition("IIoT Platform Test Collection", DisableParallelization = true)]
11 | public class IIoTPlatformTestCollection : ICollectionFixture
12 | {
13 | // This class has no code, and is never created. Its purpose is simply
14 | // to be the place to apply [CollectionDefinition] and all the
15 | // ICollectionFixture<> interfaces.
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/e2e-tests/IIoTPlatform-E2E-Tests/TestExtensions/IIoTStandaloneTestCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace IIoTPlatformE2ETests.TestExtensions
7 | {
8 | using Xunit;
9 |
10 | [CollectionDefinition("IIoT Standalone Test Collection", DisableParallelization = true)]
11 | public class IIoTStandaloneTestCollection : ICollectionFixture
12 | {
13 | // This class has no code, and is never created. Its purpose is simply
14 | // to be the place to apply [CollectionDefinition] and all the
15 | // ICollectionFixture<> interfaces.
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/e2e-tests/IIoTPlatform-E2E-Tests/Twin/TwinTestCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace IIoTPlatformE2ETests.Twin
7 | {
8 | using Xunit;
9 |
10 | [CollectionDefinition(CollectionName, DisableParallelization = true)]
11 | public class TwinTestCollection : ICollectionFixture
12 | {
13 | // This class has no code, and is never created. Its purpose is simply
14 | // to be the place to apply [CollectionDefinition] and all the
15 | // ICollectionFixture<> interfaces.
16 |
17 | public const string CollectionName = "IIoT Twin Test Collection";
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/e2e-tests/IIoTPlatform-E2E-Tests/xunit.runner.json:
--------------------------------------------------------------------------------
1 | {
2 | "parallelizeTestCollections": false
3 | }
4 |
--------------------------------------------------------------------------------
/e2e-tests/OpcPublisher-E2E-Tests/Config/IDeviceConfig.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace OpcPublisherAEE2ETests.Config
7 | {
8 | ///
9 | /// IoT Edge device configuration
10 | ///
11 | public interface IDeviceConfig
12 | {
13 | ///
14 | /// IoT Edge device id
15 | ///
16 | string DeviceId { get; }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/e2e-tests/OpcPublisher-E2E-Tests/Config/IIoTEdgeConfig.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace OpcPublisherAEE2ETests.Config
7 | {
8 | ///
9 | /// IoT Edge configuration
10 | ///
11 | public interface IIoTEdgeConfig
12 | {
13 | ///
14 | /// IoT Edge version
15 | ///
16 | string EdgeVersion { get; }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/e2e-tests/OpcPublisher-E2E-Tests/Config/IIoTHubConfig.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace OpcPublisherAEE2ETests.Config
7 | {
8 | ///
9 | /// IoT Hub configuration
10 | ///
11 | public interface IIoTHubConfig
12 | {
13 | ///
14 | /// IoT Hub connection string
15 | ///
16 | string IoTHubConnectionString { get; }
17 |
18 | ///
19 | /// The connection string of the EventHub-compatible endpoint of the IoTHub
20 | ///
21 | string IoTHubEventHubConnectionString { get; }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/e2e-tests/OpcPublisher-E2E-Tests/GlobalSuppressions.cs:
--------------------------------------------------------------------------------
1 | // This file is used by Code Analysis to maintain SuppressMessage
2 | // attributes that are applied to this project.
3 | // Project-level suppressions either have no target or are given
4 | // a specific target and scoped to a namespace, type, member, etc.
5 |
6 | using System.Diagnostics.CodeAnalysis;
7 |
8 | [assembly: SuppressMessage("Reliability", "CA2007:Consider calling ConfigureAwait on the awaited task", Justification = "xunit")]
9 |
--------------------------------------------------------------------------------
/e2e-tests/OpcPublisher-E2E-Tests/MessagingMode.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace OpcPublisherAEE2ETests
7 | {
8 | ///
9 | /// Message modes
10 | ///
11 | public enum MessagingMode
12 | {
13 | ///
14 | /// Network and dataset messages (default)
15 | ///
16 | PubSub,
17 |
18 | ///
19 | /// Monitored item samples
20 | ///
21 | Samples
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/e2e-tests/OpcPublisher-E2E-Tests/TestModels/PendingConditionEventData.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace OpcPublisherAEE2ETests.TestModels
7 | {
8 | public class PendingConditionEventData where T : BaseEventTypePayload
9 | {
10 | public bool IsPayloadCompressed { get; set; }
11 |
12 | public T Payload { get; set; }
13 | }
14 | }
--------------------------------------------------------------------------------
/e2e-tests/OpcPublisher-E2E-Tests/TestModels/SimpleEventsStep.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace OpcPublisherAEE2ETests.TestModels
7 | {
8 | /// Simple event step.
9 | public class SimpleEventsStep
10 | {
11 | /// Gets or sets the step name.
12 | /// "Step 1"
13 | public string Name { get; set; }
14 |
15 | /// Gets or sets the step duration in milliseconds.
16 | /// 1000.0
17 | public double Duration { get; set; }
18 | }
19 | }
--------------------------------------------------------------------------------
/e2e-tests/OpcPublisher-E2E-Tests/TestModels/SystemEventTypePayload.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace OpcPublisherAEE2ETests.TestModels
7 | {
8 | using Newtonsoft.Json;
9 | using System;
10 |
11 | /// Base class for system events types.
12 | public class SystemEventTypePayload : BaseEventTypePayload
13 | {
14 | /// Gets or sets the time.
15 | [JsonProperty(nameof(Time))]
16 | public DataValueObject Time { get; set; }
17 | }
18 | }
--------------------------------------------------------------------------------
/e2e-tests/OpcPublisher-E2E-Tests/xunit.runner.json:
--------------------------------------------------------------------------------
1 | {
2 | "parallelizeTestCollections": false
3 | }
4 |
--------------------------------------------------------------------------------
/samples/.gitignore:
--------------------------------------------------------------------------------
1 | /**/launchSettings.json
--------------------------------------------------------------------------------
/samples/Http/BrowseAll/BrowseAll.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | Exe
4 | net9.0
5 | enable
6 | enable
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/samples/Http/GetConfiguration/GetConfiguration.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | Exe
4 | net9.0
5 | enable
6 | enable
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/samples/Http/GetDiagnostics/GetDiagnostics.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | Exe
4 | net9.0
5 | enable
6 | enable
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/samples/Http/ReadCurrentTime/ReadCurrentTime.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | Exe
4 | net9.0
5 | enable
6 | enable
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/samples/Http/SetConfiguration/SetConfiguration.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | Exe
4 | net9.0
5 | enable
6 | enable
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/samples/Http/WriteReadbackValue/WriteReadbackValue.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | Exe
4 | net9.0
5 | enable
6 | enable
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/samples/IoTHub/ApproveRejected/ApproveRejected.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | Exe
4 | net9.0
5 | enable
6 | enable
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/samples/IoTHub/BrowseCertificates/BrowseCertificates.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | Exe
4 | net9.0
5 | enable
6 | enable
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/samples/IoTHub/GetCertificate/GetApplicationCert.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | Exe
4 | net9.0
5 | enable
6 | enable
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/samples/IoTHub/GetConfiguration/GetConfiguration.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | Exe
4 | net9.0
5 | enable
6 | enable
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/samples/IoTHub/ManageWriter/ManageWriter.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | Exe
4 | net9.0
5 | enable
6 | enable
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/samples/IoTHub/MonitorMessages/MonitorMessages.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | Exe
4 | net9.0
5 | enable
6 | enable
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/samples/IoTHub/ReadCurrentTime/ReadCurrentTime.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | Exe
4 | net9.0
5 | enable
6 | enable
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/samples/IoTHub/ResetClients/GetAndResetConnections.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | Exe
4 | net9.0
5 | enable
6 | enable
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/samples/IoTHub/WriteReadbackValue/WriteReadbackValue.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | Exe
4 | net9.0
5 | enable
6 | enable
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/samples/Mqtt/GetConfiguration/GetConfiguration.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | Exe
4 | net9.0
5 | enable
6 | enable
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/samples/Mqtt/ManageWriter/ManageWriter.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | Exe
4 | net9.0
5 | enable
6 | enable
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/samples/Mqtt/MonitorMessages/MonitorMessages.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | Exe
4 | net9.0
5 | enable
6 | enable
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/samples/Mqtt/ReadAttributes/ReadAttributes.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | Exe
4 | net9.0
5 | enable
6 | enable
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/samples/Mqtt/ReadCurrentTime/ReadCurrentTime.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | Exe
4 | net9.0
5 | enable
6 | enable
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/samples/Mqtt/WriteReadbackValue/WriteReadbackValue.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | Exe
4 | net9.0
5 | enable
6 | enable
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/samples/Netcap/Directory.Build.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/samples/Netcap/build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -e
3 | cd src
4 | docker build -t netcap:latest .
5 | docker run -it --cap-add=NET_ADMIN netcap:latest $@
6 |
--------------------------------------------------------------------------------
/samples/Netcap/src/.dockerignore:
--------------------------------------------------------------------------------
1 | **/.dockerignore
2 | **/.env
3 | **/.gitignore
4 | **/.project
5 | **/.settings
6 | **/.toolstarget
7 | **/.vs
8 | **/.vscode
9 | **/*.sh
10 | **/*.bat
11 | **/*.cmd
12 | **/*.props
13 | **/*.*proj.user
14 | **/*.dbmdl
15 | **/*.jfm
16 | **/azds.yaml
17 | **/charts
18 | **/docker-compose*
19 | **/Dockerfile*
20 | **/obj
21 | **/bin
22 | **/secrets.dev.yaml
23 | **/values.dev.yaml
24 | LICENSE
25 | README.md
26 | !**/.gitignore
27 | !.git/HEAD
28 | !.git/config
29 | !.git/packed-refs
30 | !.git/refs/heads/**
--------------------------------------------------------------------------------
/src/.gitignore:
--------------------------------------------------------------------------------
1 | /**/launchSettings.json
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Models/src/Azure.IIoT.OpcUa.Publisher.Models.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | net9.0
4 | true
5 | true
6 | true
7 | Azure OPC Publisher Sdk shared models
8 | enable
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Models/src/GatewayUpdateModel.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Models
7 | {
8 | using System.Runtime.Serialization;
9 |
10 | ///
11 | /// Gateway registration update request
12 | ///
13 | [DataContract]
14 | public sealed record class GatewayUpdateModel
15 | {
16 | ///
17 | /// Site of the Gateway
18 | ///
19 | [DataMember(Name = "siteId", Order = 1,
20 | EmitDefaultValue = false)]
21 | public string? SiteId { get; set; }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Models/src/NodeIdModel.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Models
7 | {
8 | using System.Runtime.Serialization;
9 |
10 | ///
11 | /// Node id serialized as object
12 | ///
13 | [DataContract]
14 | public sealed record class NodeIdModel
15 | {
16 | ///
17 | /// Identifier
18 | ///
19 | [DataMember(Name = "Identifier", Order = 0,
20 | EmitDefaultValue = false)]
21 | public string? Identifier { get; set; }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Models/src/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | using System.Runtime.CompilerServices;
7 |
8 | [assembly: InternalsVisibleTo("Azure.IIoT.OpcUa.Publisher.Models.Tests")]
9 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Models/src/PublishedNodesResponseModel.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Models
7 | {
8 | ///
9 | /// PublishNodes direct method response
10 | ///
11 | public sealed record class PublishedNodesResponseModel
12 | {
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Models/tests/GlobalSuppressions.cs:
--------------------------------------------------------------------------------
1 | // This file is used by Code Analysis to maintain SuppressMessage
2 | // attributes that are applied to this project.
3 | // Project-level suppressions either have no target or are given
4 | // a specific target and scoped to a namespace, type, member, etc.
5 |
6 | using System.Diagnostics.CodeAnalysis;
7 |
8 | [assembly: SuppressMessage("Reliability", "CA2007:Consider calling ConfigureAwait on the awaited task", Justification = "xunit")]
9 | [assembly: SuppressMessage("Usage", "xUnit1042:The member referenced by the MemberData attribute returns untyped data rows", Justification = "xunit")]
10 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/cli/Initfiles/Machinery.init:
--------------------------------------------------------------------------------
1 | ###
2 | // @delay 5
3 | ExpandAndCreateOrUpdateDataSetWriterEntries
4 |
5 | {
6 | "entry": {
7 | "EndpointUrl": "opc.tcp://opcua.umati.app:4840",
8 | "UseSecurity": false,
9 | "DataSetWriterGroup": "Machinery Objects",
10 | "OpcNodes": [
11 | { "Id": "nsu=http://opcfoundation.org/UA/Machinery/;i=1001" }
12 | ]
13 | },
14 | "request": {
15 | "flattenTypeInstance": true
16 | }
17 | }
18 |
19 | // @retries 3
20 | ###
21 | Shutdown
22 | // @on-error
23 | ###
24 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/cli/Initfiles/Objects.init:
--------------------------------------------------------------------------------
1 | ###
2 | // @delay 5
3 | // @retries 3
4 | ExpandAndCreateOrUpdateDataSetWriterEntries_V2
5 |
6 | {
7 | "entry": {
8 | "EndpointUrl": "{{EndpointUrl}}",
9 | "UseSecurity": false,
10 | "DataSetWriterGroup": "Objects",
11 | "OpcNodes": [
12 | { "Id": "i=85" }
13 | ]
14 | }
15 | }
16 |
17 | ###
18 | # @on-error
19 | Shutdown_V2
20 |
21 | true
22 | ###
23 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/cli/Initfiles/Variables.init:
--------------------------------------------------------------------------------
1 | ###
2 | // @delay 5
3 | // @retries 3
4 | ExpandAndCreateOrUpdateDataSetWriterEntries_V2
5 |
6 | {
7 | "entry": {
8 | "EndpointUrl": "{{EndpointUrl}}",
9 | "UseSecurity": false,
10 | "DataSetWriterGroup": "Variables",
11 | "OpcNodes": [
12 | { "Id": "i=85" }
13 | ]
14 | },
15 | "request": {
16 | "createSingleWriter": true,
17 | "maxDepth": 10,
18 | "discardErrors": true
19 | }
20 | }
21 |
22 | ###
23 | # @on-error
24 | Shutdown_V2
25 |
26 | true
27 | ###
28 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/cli/Profiles/DataItems.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "{{EndpointUrl}}",
4 | "EndpointSecurityMode": "Sign",
5 | "OpcNodes": [
6 | {
7 | "Id": "ns=24;i=1259",
8 | "OpcSamplingInterval": 2000,
9 | "OpcPublishingInterval": 2000,
10 | "DisplayName": "Output",
11 | "SkipFirst": true
12 | }
13 | ]
14 | }
15 | ]
16 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/cli/Profiles/Empty.json:
--------------------------------------------------------------------------------
1 | [
2 | ]
3 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/cli/Profiles/FastTime.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "{{EndpointUrl}}",
4 | "DataSetPublishingInterval": 10,
5 | "UseSecurity": true,
6 | "OpcNodes": [
7 | {
8 | "Id": "ns=24;i=1259",
9 | "OpcSamplingInterval": 10,
10 | "QueueSize": 10
11 | },
12 | {
13 | "Id": "i=2258",
14 | "OpcSamplingInterval": 10,
15 | "QueueSize": 10
16 | }
17 | ]
18 | }
19 | ]
20 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/cli/Profiles/FixedAndData.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "{{EndpointUrl}}",
4 | "UseSecurity": true,
5 | "OpcNodes": [
6 | { "Id": "i=2258" },
7 | { "Id": "i=2271" },
8 | { "Id": "i=2254" },
9 | { "Id": "i=2255" },
10 | { "Id": "i=11702" },
11 | { "Id": "i=11703" }
12 | ]
13 | }
14 | ]
15 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/cli/Profiles/Fixedvalue.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "{{EndpointUrl}}",
4 | "UseSecurity": true,
5 | "OpcNodes": [
6 | { "Id": "i=2271" },
7 | { "Id": "i=2254" },
8 | { "Id": "i=2255" },
9 | { "Id": "i=11702" },
10 | { "Id": "i=11703" }
11 | ]
12 | }
13 | ]
14 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/cli/Profiles/Heartbeat.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "{{EndpointUrl}}",
4 | "OpcNodes": [
5 | {
6 | "Id": "ns=24;i=1259",
7 | "OpcPublishingInterval": 20000,
8 | "HeartbeatInterval": 20,
9 | "DisplayName": "Output"
10 | }
11 | ]
12 | }
13 | ]
14 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/cli/Profiles/Isa95Jobs.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "{{EndpointUrl}}",
4 | "UseSecurity": true,
5 | "OpcNodes": [
6 | {
7 | "Id": "i=2253",
8 | "DisplayName": "Isa95JobResponseData",
9 | "QueueSize": 10,
10 | "EventFilter": {
11 | "TypeDefinitionId": "nsu=http://opcfoundation.org/UA/ISA95-JOBCONTROL_V2/;i=1006"
12 | }
13 | }
14 | ]
15 | }
16 | ]
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/cli/Profiles/KeepAlive.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "{{EndpointUrl}}",
4 | "SendKeepAliveDataSetMessages": true,
5 | "MessagingMode": "PubSub",
6 | "UseSecurity": true,
7 | "OpcNodes": [
8 | {
9 | "Id": "i=2259",
10 | "FetchDisplayName": true
11 | }
12 | ]
13 | }
14 | ]
15 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/cli/Profiles/KeyFrames.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "{{EndpointUrl}}",
4 | "MessagingMode": "PubSub",
5 | "DataSetExtensionFields": {
6 | "EngineeringUnits": "mm/sec",
7 | "AssetId": 5,
8 | "Important": false,
9 | "Variance": 12.3465
10 | },
11 | "DataSetKeyFrameCount": 10,
12 | "DataSetPublishingInterval": 100,
13 | "OpcNodes": [
14 | {
15 | "Id": "i=2258",
16 | "OpcSamplingInterval": 100,
17 | "FetchDisplayName": true
18 | }
19 | ]
20 | }
21 | ]
22 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/cli/Profiles/ModelChanges.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "{{EndpointUrl}}",
4 | "EndpointSecurityMode": "SignAndEncrypt",
5 | "OpcNodes": [
6 | {
7 | "ModelChangeHandling": {
8 | "RebrowsePeriod": "00:00:10"
9 | }
10 | }
11 | ]
12 | }
13 | ]
14 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/cli/Profiles/NoNodes.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "{{EndpointUrl}}",
4 | "EndpointSecurityMode": "Sign",
5 | "OpcNodes": []
6 | }
7 | ]
8 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/cli/Profiles/PendingAlarms.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "{{EndpointUrl}}",
4 | "UseSecurity": true,
5 | "OpcNodes": [
6 | {
7 | "DisplayName": "PendingAlarms",
8 | "Id": "i=2253",
9 | "EventFilter": {
10 | "TypeDefinitionId": "i=2041"
11 | },
12 | "ConditionHandling": {
13 | "UpdateInterval": 10,
14 | "SnapshotInterval": 20
15 | }
16 | }
17 | ]
18 | }
19 | ]
20 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/cli/Profiles/RegisteredRead.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "{{EndpointUrl}}",
4 | "UseSecurity": true,
5 | "OpcNodes": [
6 | {
7 | "Id": "ns=24;i=1259",
8 | "OpcSamplingInterval": 500,
9 | "FetchDisplayName": true,
10 | "RegisterNode": true,
11 | "UseCyclicRead": true
12 | }
13 | ]
14 | }
15 | ]
16 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/cli/Profiles/SubscribeErrors.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "{{EndpointUrl}}",
4 | "UseSecurity": true,
5 | "OpcNodes": [
6 | { "Id": "nsu=http://microsoft.com/Opc/OpcPlc/;s=StepUp" },
7 | { "Id": "nsu=http://opcfoundation.org/UA/Plc/Applications;s=AlternatingBoolean" },
8 | { "Id": "nsu=http://microsoft.com/Opc/OpcPlc/;s=RandomSignedInt32" },
9 | { "Id": "nsu=http://opcfoundation.org/UA/Plc/Applications;s=DoesNotExist" }
10 | ]
11 | }
12 | ]
13 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/cli/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | using System;
7 |
8 | [assembly: CLSCompliant(false)]
9 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/cli/publishednodes.json:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/src/Azure.IIoT.OpcUa.Publisher.Module/cli/publishednodes.json
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/src/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | using System.Runtime.CompilerServices;
7 |
8 | [assembly: InternalsVisibleTo("Azure.IIoT.OpcUa.Publisher.Module.Tests")]
9 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Controller/Asset/Json/WriteCollection1.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Module.Tests.Controller.Asset.Json
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class WriteCollection1 : ICollectionFixture
13 | {
14 | public const string Name = "AssetWrite1RestJson";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Controller/Asset/Json/WriteCollection2.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Module.Tests.Controller.Asset.Json
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class WriteCollection2 : ICollectionFixture
13 | {
14 | public const string Name = "AssetWrite2RestJson";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Controller/Asset/Json/WriteCollection3.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Module.Tests.Controller.Asset.Json
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class WriteCollection3 : ICollectionFixture
13 | {
14 | public const string Name = "AssetWrite3RestJson";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Controller/Asset/Json/WriteCollection4.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Module.Tests.Controller.Asset.Json
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class WriteCollection4 : ICollectionFixture
13 | {
14 | public const string Name = "AssetWrite4RestJson";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Controller/Asset/MsgPack/WriteCollection1.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Module.Tests.Controller.Asset.MsgPack
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class WriteCollection1 : ICollectionFixture
13 | {
14 | public const string Name = "AssetWrite1RestMsgPack";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Controller/Asset/MsgPack/WriteCollection2.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Module.Tests.Controller.Asset.MsgPack
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class WriteCollection2 : ICollectionFixture
13 | {
14 | public const string Name = "AssetWrite2RestMsgPack";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Controller/Asset/MsgPack/WriteCollection3.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Module.Tests.Controller.Asset.MsgPack
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class WriteCollection3 : ICollectionFixture
13 | {
14 | public const string Name = "AssetWrite3RestMsgPack";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Controller/Asset/MsgPack/WriteCollection4.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Module.Tests.Controller.Asset.MsgPack
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class WriteCollection4 : ICollectionFixture
13 | {
14 | public const string Name = "AssetWrite4RestMsgPack";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Controller/FileSystem/Json/FileCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Module.Tests.Controller.FileSystem.Json
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class FileCollection : ICollectionFixture
13 | {
14 | public const string Name = "FileSystemRestJson";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Controller/FileSystem/MsgPack/FileCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Module.Tests.Controller.FileSystem.MsgPack
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class FileCollection : ICollectionFixture
13 | {
14 | public const string Name = "FileSystemRestMsgPack";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Controller/HistoricalAccess/Json/ReadCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Module.Tests.Controller.HistoricalAccess.Json
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public sealed class ReadCollection : ICollectionFixture
13 | {
14 | public const string Name = "HistoricalAccessServerReadRestJson";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Controller/HistoricalAccess/MsgPack/ReadCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Module.Tests.Controller.HistoricalAccess.MsgPack
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public sealed class ReadCollection : ICollectionFixture
13 | {
14 | public const string Name = "HistoricalAccessServerReadRestMsgPack";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Controller/HistoricalEvents/Json/ReadCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Module.Tests.Controller.HistoricalEvents.Json
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public sealed class ReadCollection : ICollectionFixture
13 | {
14 | public const string Name = "HistoricalEventsServerReadRestJson";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Controller/HistoricalEvents/MsgPack/ReadCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Module.Tests.Controller.HistoricalEvents.MsgPack
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public sealed class ReadCollection : ICollectionFixture
13 | {
14 | public const string Name = "HistoricalEventsServerReadRestMsgPack";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Controller/TestData/Json/ReadCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Module.Tests.Controller.TestData.Json
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public sealed class ReadCollection : ICollectionFixture
13 | {
14 | public const string Name = "TestDataServerReadRestJson";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Controller/TestData/Json/WriteCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Module.Tests.Controller.TestData.Json
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public sealed class WriteCollection : ICollectionFixture
13 | {
14 | public const string Name = "TestDataServerWriteRestJson";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Controller/TestData/MsgPack/ReadCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Module.Tests.Controller.TestData.MsgPack
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public sealed class ReadCollection : ICollectionFixture
13 | {
14 | public const string Name = "TestDataServerReadRestMsgPack";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Controller/TestData/MsgPack/WriteCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Module.Tests.Controller.TestData.MsgPack
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public sealed class WriteCollection : ICollectionFixture
13 | {
14 | public const string Name = "TestDataServerWriteRestMsgPack";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Fixtures/ReferenceServerReadCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Module.Tests.Fixtures
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class ReferenceServerReadCollection : ICollectionFixture
13 | {
14 | public const string Name = "Read";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Fixtures/TestSerializerType.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Module.Tests.Fixtures
7 | {
8 | public enum TestSerializerType
9 | {
10 | Json,
11 | MsgPack,
12 | NewtonsoftJson,
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/GlobalSuppressions.cs:
--------------------------------------------------------------------------------
1 | // This file is used by Code Analysis to maintain SuppressMessage
2 | // attributes that are applied to this project.
3 | // Project-level suppressions either have no target or are given
4 | // a specific target and scoped to a namespace, type, member, etc.
5 |
6 | using System.Diagnostics.CodeAnalysis;
7 |
8 | [assembly: SuppressMessage("Reliability", "CA2007:Consider calling ConfigureAwait on the awaited task", Justification = "xunit")]
9 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Logging.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Module.Tests
7 | {
8 | using Microsoft.Extensions.Logging;
9 | using Neovolve.Logging.Xunit;
10 |
11 | internal static class Logging
12 | {
13 | ///
14 | /// Default level
15 | ///
16 | public static LogLevel Level => LogLevel.Information;
17 |
18 | ///
19 | /// Configuration
20 | ///
21 | public static LoggingConfig Config => new() { LogLevel = Level };
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Mqtt/HistoricalAccess/ReadCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Module.Tests.Mqtt.HistoricalAccess
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name, DisableParallelization = true)]
12 | public class ReadCollection : ICollectionFixture
13 | {
14 | public const string Name = "HistoricalAccessServerReadModuleMqtt";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Mqtt/HistoricalEvents/ReadCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Module.Tests.Mqtt.HistoricalEvents
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name, DisableParallelization = true)]
12 | public class ReadCollection : ICollectionFixture
13 | {
14 | public const string Name = "HistoricalEventsServerReadModuleMqtt";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Mqtt/TestData/ReadCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Module.Tests.Mqtt.TestData
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name, DisableParallelization = true)]
12 | public class ReadCollection : ICollectionFixture
13 | {
14 | public const string Name = "TestDataServerReadModuleMqtt";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Mqtt/TestData/WriteCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Module.Tests.Mqtt.TestData
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class WriteCollection : ICollectionFixture
13 | {
14 | public const string Name = "TestDataServerWriteModuleMqtt";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | #if !DEBUG
7 | using Xunit;
8 | [assembly: CollectionBehavior(CollectionBehavior.CollectionPerAssembly, MaxParallelThreads = 4)]
9 | #endif
10 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Resources/CyclicRead.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "{{EndpointUrl}}",
4 | "UseReverseConnect": "{{UseReverseConnect}}",
5 | "UseSecurity": false,
6 | "DataSetWriterGroup": "{{DataSetWriterGroup}}",
7 | "OpcNodes": [
8 | {
9 | "Id": "ns=23;i=1259",
10 | "OpcSamplingInterval": 500,
11 | "FetchDisplayName": true,
12 | "UseCyclicRead": true,
13 | "CyclicReadMaxAge": 500
14 | }
15 | ]
16 | }
17 | ]
18 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Resources/DataItems.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "{{EndpointUrl}}",
4 | "UseSecurity": false,
5 | "DataSetWriterGroup": "{{DataSetWriterGroup}}",
6 | "OpcNodes": [
7 | {
8 | "Id": "ns=23;i=1259",
9 | "OpcSamplingInterval": 200,
10 | "OpcPublishingInterval": 200,
11 | "DisplayName": "Output",
12 | "SkipFirst": true
13 | }
14 | ]
15 | }
16 | ]
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Resources/DataItems1.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "{{EndpointUrl}}",
4 | "UseSecurity": false,
5 | "DataSetWriterGroup": "{{DataSetWriterGroup}}",
6 | "OpcNodes": [
7 | {
8 | "Id": "ns=23;i=1259"
9 | },
10 | {
11 | "Id": "i=2258"
12 | }
13 | ]
14 | }
15 | ]
16 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Resources/DataItems2.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "{{EndpointUrl}}",
4 | "UseReverseConnect": "{{UseReverseConnect}}",
5 | "EndpointSecurityMode": "{{SecurityMode}}",
6 | "DataSetWriterGroup": "{{DataSetWriterGroup}}",
7 | "OpcNodes": [
8 | {
9 | "Id": "http://test.org/UA/Data/#i=11224",
10 | "OpcSamplingInterval": 100,
11 | "OpcPublishingInterval": 100,
12 | "DisplayName": "Output2"
13 | }
14 | ]
15 | }
16 | ]
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Resources/ExtensionFields.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "{{EndpointUrl}}",
4 | "UseSecurity": false,
5 | "DataSetWriterGroup": "{{DataSetWriterGroup}}",
6 | "DataSetExtensionFields": {
7 | "EngineeringUnits": "mm/sec",
8 | "AssetId": 5,
9 | "Important": false,
10 | "Variance": 12.3465
11 | },
12 | "OpcNodes": [
13 | {
14 | "Id": "ns=23;i=1259",
15 | "OpcSamplingInterval": 200,
16 | "OpcPublishingInterval": 200,
17 | "DisplayName": "Output",
18 | "SkipFirst": true
19 | }
20 | ]
21 | }
22 | ]
23 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Resources/Fixedvalue.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "{{EndpointUrl}}",
4 | "EndpointSecurityMode": "{{SecurityMode}}",
5 | "DataSetFetchDisplayNames": true,
6 | "OpcNodes": [
7 | { "Id": "i=2271" },
8 | { "Id": "i=2254" },
9 | { "Id": "i=2255" }
10 | ]
11 | }
12 | ]
13 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Resources/Heartbeat.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "{{EndpointUrl}}",
4 | "UseSecurity": false,
5 | "DataSetWriterGroup": "{{DataSetWriterGroup}}",
6 | "OpcNodes": [
7 | {
8 | "Id": "i=2271",
9 | "HeartbeatInterval": 1
10 | }
11 | ]
12 | }
13 | ]
14 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Resources/Heartbeat2.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "{{EndpointUrl}}",
4 | "UseSecurity": false,
5 | "DataSetWriterGroup": "{{DataSetWriterGroup}}",
6 | "OpcNodes": [
7 | {
8 | "Id": "ns=23;i=1259",
9 | "OpcSamplingInterval": 100,
10 | "FetchDisplayName": true,
11 | "OpcPublishingInterval": 100,
12 | "HeartbeatInterval": 1,
13 | "HeartbeatBehavior": "PeriodicLKVDropValue"
14 | }
15 | ]
16 | }
17 | ]
18 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Resources/HeartbeatErrors.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "{{EndpointUrl}}",
4 | "UseSecurity": false,
5 | "DataSetWriterGroup": "{{DataSetWriterGroup}}",
6 | "OpcNodes": [
7 | {
8 | "Id": "i=932534",
9 | "HeartbeatInterval": 1
10 | }
11 | ]
12 | }
13 | ]
14 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Resources/Isa95Jobs.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "{{EndpointUrl}}",
4 | "UseSecurity": false,
5 | "DataSetWriterGroup": "{{DataSetWriterGroup}}",
6 | "OpcNodes": [
7 | {
8 | "Id": "i=2253",
9 | "DisplayName": "Isa95JobResponseData",
10 | "QueueSize": 10,
11 | "EventFilter": {
12 | "TypeDefinitionId": "nsu=http://opcfoundation.org/UA/ISA95-JOBCONTROL_V2/;i=1006"
13 | }
14 | }
15 | ]
16 | }
17 | ]
18 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Resources/KeepAlive.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "{{EndpointUrl}}",
4 | "UseReverseConnect": "{{UseReverseConnect}}",
5 | "SendKeepAliveDataSetMessages": true,
6 | "MaxKeepAliveCount": 2,
7 | "MessagingMode": "PubSub",
8 | "UseSecurity": false,
9 | "DataSetWriterGroup": "{{DataSetWriterGroup}}",
10 | "OpcNodes": [
11 | {
12 | "Id": "i=2259",
13 | "FetchDisplayName": true
14 | }
15 | ]
16 | }
17 | ]
18 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Resources/KeyFrames.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "{{EndpointUrl}}",
4 | "MessagingMode": "PubSub",
5 | "UseSecurity": false,
6 | "DataSetWriterGroup": "{{DataSetWriterGroup}}",
7 | "DataSetExtensionFields": {
8 | "EngineeringUnits": "mm/sec",
9 | "AssetId": 5,
10 | "Important": false,
11 | "Variance": 12.3465
12 | },
13 | "DataSetKeyFrameCount": 10,
14 | "DataSetPublishingInterval": 100,
15 | "OpcNodes": [
16 | {
17 | "Id": "i=2258",
18 | "OpcSamplingInterval": 100,
19 | "FetchDisplayName": true
20 | }
21 | ]
22 | }
23 | ]
24 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Resources/ModelChanges.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "{{EndpointUrl}}",
4 | "UseSecurity": false,
5 | "OpcNodes": [
6 | {
7 | "ModelChangeHandling": {
8 | "RebrowsePeriod": "00:00:10"
9 | }
10 | }
11 | ]
12 | }
13 | ]
14 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Resources/PendingAlarms.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "{{EndpointUrl}}",
4 | "UseSecurity": false,
5 | "DataSetWriterGroup": "{{DataSetWriterGroup}}",
6 | "OpcNodes": [
7 | {
8 | "DisplayName": "PendingAlarms",
9 | "Id": "i=2253",
10 | "EventFilter": {
11 | "TypeDefinitionId": "i=2041"
12 | },
13 | "ConditionHandling": {
14 | "UpdateInterval": 1,
15 | "SnapshotInterval": 2
16 | }
17 | }
18 | ]
19 | }
20 | ]
21 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Resources/RegisteredRead.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "{{EndpointUrl}}",
4 | "UseReverseConnect": "{{UseReverseConnect}}",
5 | "UseSecurity": false,
6 | "DataSetWriterGroup": "{{DataSetWriterGroup}}",
7 | "OpcNodes": [
8 | {
9 | "Id": "ns=23;i=1259",
10 | "OpcSamplingInterval": 500,
11 | "FetchDisplayName": true,
12 | "RegisterNode": true,
13 | "UseCyclicRead": true
14 | }
15 | ]
16 | }
17 | ]
18 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Resources/SimpleEvents2.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "{{EndpointUrl}}",
4 | "UseSecurity": false,
5 | "DataSetWriterGroup": "{{DataSetWriterGroup}}",
6 | "OpcNodes": [
7 | {
8 | "Id": "i=2253",
9 | "DisplayName": "Alarm",
10 | "EventFilter": {
11 | "TypeDefinitionId": "i=10060"
12 | }
13 | },
14 | {
15 | "Id": "i=2253",
16 | "DisplayName": "CycleStarted",
17 | "EventFilter": {
18 | "TypeDefinitionId": "ns=16;i=235"
19 | }
20 | }
21 | ]
22 | }
23 | ]
24 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Resources/UnifiedNamespace.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "{{EndpointUrl}}",
4 | "UseSecurity": false,
5 | "DataSetWriterGroup": "{{DataSetWriterGroup}}",
6 | "MessagingMode": "RawDataSets",
7 | "DataSetRouting": "UseBrowseNames",
8 | "OpcNodes": [
9 | {
10 | "Id": "ns=23;i=1259"
11 | },
12 | {
13 | "Id": "i=2258"
14 | }
15 | ]
16 | }
17 | ]
18 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Resources/empty_pn.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Sdk/HistoricalAccess/ReadCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Module.Tests.Sdk.HistoricalAccess
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class ReadCollection : ICollectionFixture
13 | {
14 | public const string Name = "HistoricalAccessServerReadModuleSdk";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Sdk/HistoricalEvents/ReadCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Module.Tests.Sdk.HistoricalEvents
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class ReadCollection : ICollectionFixture
13 | {
14 | public const string Name = "HistoricalEventsServerReadModuleSdk";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Sdk/TestData/ReadCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Module.Tests.Sdk.TestData
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class ReadCollection : ICollectionFixture
13 | {
14 | public const string Name = "TestDataServerReadModuleSdk";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Module/tests/Sdk/TestData/WriteCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Module.Tests.Sdk.TestData
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class WriteCollection : ICollectionFixture
13 | {
14 | public const string Name = "TestDataServerWriteModuleSdk";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Sdk/src/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | using System.Runtime.CompilerServices;
7 |
8 | [assembly: InternalsVisibleTo("Azure.IIoT.OpcUa.Publisher.Sdk.Tests")]
9 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Service.Sdk/cli/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | using System;
7 |
8 | [assembly: CLSCompliant(false)]
9 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Service.Sdk/src/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | using System.Runtime.CompilerServices;
7 |
8 | [assembly: InternalsVisibleTo("Azure.IIoT.OpcUa.Publisher.Service.Sdk.Tests")]
9 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Service.Sdk/src/Runtime/EnvVars.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Service.Sdk.Runtime
7 | {
8 | ///
9 | /// Common runtime environment variables
10 | ///
11 | internal static class EnvVars
12 | {
13 | /// OPC publisher service endpoint url
14 | public const string PCS_SERVICE_URL =
15 | "PCS_SERVICE_URL";
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Service.WebApi/src/Hubs/ApplicationsHub.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Service.WebApi
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Service.WebApi.SignalR;
9 | using Microsoft.AspNetCore.Authorization;
10 | using Microsoft.AspNetCore.SignalR;
11 |
12 | ///
13 | /// Applications hub
14 | ///
15 | [MapTo("events/v2/applications/events")]
16 | [Authorize(Policy = Policies.CanRead)]
17 | public class ApplicationsHub : Hub;
18 | }
19 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Service.WebApi/src/Hubs/DiscoverersHub.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Service.WebApi
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Service.WebApi.SignalR;
9 | using Microsoft.AspNetCore.Authorization;
10 | using Microsoft.AspNetCore.SignalR;
11 |
12 | ///
13 | /// Discovery hub
14 | ///
15 | [MapTo("events/v2/discovery/events")]
16 | [Authorize(Policy = Policies.CanRead)]
17 | public class DiscoverersHub : Hub;
18 | }
19 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Service.WebApi/src/Hubs/EndpointsHub.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Service.WebApi
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Service.WebApi.SignalR;
9 | using Microsoft.AspNetCore.Authorization;
10 | using Microsoft.AspNetCore.SignalR;
11 |
12 | ///
13 | /// Endpoints hub
14 | ///
15 | [MapTo("events/v2/endpoints/events")]
16 | [Authorize(Policy = Policies.CanRead)]
17 | public class EndpointsHub : Hub;
18 | }
19 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Service.WebApi/src/Hubs/GatewaysHub.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Service.WebApi
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Service.WebApi.SignalR;
9 | using Microsoft.AspNetCore.Authorization;
10 | using Microsoft.AspNetCore.SignalR;
11 |
12 | ///
13 | /// Gateway hub
14 | ///
15 | [MapTo("events/v2/gateways/events")]
16 | [Authorize(Policy = Policies.CanRead)]
17 | public class GatewaysHub : Hub;
18 | }
19 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Service.WebApi/src/Hubs/PublishersHub.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Service.WebApi
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Service.WebApi.SignalR;
9 | using Microsoft.AspNetCore.Authorization;
10 | using Microsoft.AspNetCore.SignalR;
11 |
12 | ///
13 | /// Publishers hub
14 | ///
15 | [MapTo("events/v2/publishers/events")]
16 | [Authorize(Policy = Policies.CanRead)]
17 | public class PublishersHub : Hub;
18 | }
19 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Service.WebApi/src/Hubs/SupervisorsHub.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Service.WebApi
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Service.WebApi.SignalR;
9 | using Microsoft.AspNetCore.Authorization;
10 | using Microsoft.AspNetCore.SignalR;
11 |
12 | ///
13 | /// Supervisors hub
14 | ///
15 | [MapTo("events/v2/supervisors/events")]
16 | [Authorize(Policy = Policies.CanRead)]
17 | public class SupervisorsHub : Hub;
18 | }
19 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Service.WebApi/src/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | using System.Runtime.CompilerServices;
7 |
8 | [assembly: InternalsVisibleTo("Azure.IIoT.OpcUa.Publisher.Service.WebApi.Tests")]
9 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Service.WebApi/tests/Controllers/TestData/Binary/ReadCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Service.WebApi.Tests.Controllers.TestData.MsgPack
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class ReadCollection : ICollectionFixture
13 | {
14 | public const string Name = "ReadTestDataBinaryControllers";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Service.WebApi/tests/Controllers/TestData/Json/ReadCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Service.WebApi.Tests.Controllers.TestData.Json
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class ReadCollection : ICollectionFixture
13 | {
14 | public const string Name = "ReadJsonControllers";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Service.WebApi/tests/Fixtures/TestSerializerType.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Service.WebApi.Tests
7 | {
8 | public enum TestSerializerType
9 | {
10 | NewtonsoftJson,
11 | Json,
12 | MsgPack,
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Service.WebApi/tests/GlobalSuppressions.cs:
--------------------------------------------------------------------------------
1 | // This file is used by Code Analysis to maintain SuppressMessage
2 | // attributes that are applied to this project.
3 | // Project-level suppressions either have no target or are given
4 | // a specific target and scoped to a namespace, type, member, etc.
5 |
6 | using System.Diagnostics.CodeAnalysis;
7 |
8 | [assembly: SuppressMessage("Reliability", "CA2007:Consider calling ConfigureAwait on the awaited task", Justification = "xunit")]
9 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Service.WebApi/tests/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | #if !DEBUG
7 | using Xunit;
8 | [assembly: CollectionBehavior(CollectionBehavior.CollectionPerAssembly, MaxParallelThreads = 4)]
9 | #endif
10 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Service.WebApi/tests/Sdk/HistoricalAccess/Json/ReadCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Service.WebApi.Tests.Sdk.HistoricalAccess.Json
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class ReadCollection : ICollectionFixture
13 | {
14 | public const string Name = "HistoricalAccessReadJson";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Service.WebApi/tests/Sdk/HistoricalAccess/MsgPack/ReadCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Service.WebApi.Tests.Sdk.HistoricalAccess.MsgPack
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class ReadCollection : ICollectionFixture
13 | {
14 | public const string Name = "HistoricalAccessReadBinary";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Service.WebApi/tests/Sdk/HistoricalEvents/Json/ReadCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Service.WebApi.Tests.Sdk.HistoricalEvents.Json
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class ReadCollection : ICollectionFixture
13 | {
14 | public const string Name = "HistoricalEventsReadJson";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Service.WebApi/tests/Sdk/HistoricalEvents/MsgPack/ReadCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Service.WebApi.Tests.Sdk.HistoricalEvents.MsgPack
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class ReadCollection : ICollectionFixture
13 | {
14 | public const string Name = "HistoricalEventsReadBinary";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Service.WebApi/tests/Sdk/TestData/Json/ReadCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Service.WebApi.Tests.Sdk.TestData.Json
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class ReadCollection : ICollectionFixture
13 | {
14 | public const string Name = "TestDataReadJson";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Service.WebApi/tests/Sdk/TestData/Json/WriteCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Service.WebApi.Tests.Sdk.TestData.Json
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class WriteCollection : ICollectionFixture
13 | {
14 | public const string Name = "TestDataWriteJson";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Service.WebApi/tests/Sdk/TestData/MsgPack/ReadCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Service.WebApi.Tests.Sdk.TestData.Binary
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class ReadCollection : ICollectionFixture
13 | {
14 | public const string Name = "TestDataReadBinary";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Service.WebApi/tests/Sdk/TestData/MsgPack/WriteCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Service.WebApi.Tests.Sdk.TestData.Binary
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class WriteCollection : ICollectionFixture
13 | {
14 | public const string Name = "TestDataWriteBinary";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Service/src/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | using System.Runtime.CompilerServices;
7 |
8 | [assembly: InternalsVisibleTo("Azure.IIoT.OpcUa.Publisher.Service.Tests")]
9 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Service/tests/GlobalSuppressions.cs:
--------------------------------------------------------------------------------
1 | // This file is used by Code Analysis to maintain SuppressMessage
2 | // attributes that are applied to this project.
3 | // Project-level suppressions either have no target or are given
4 | // a specific target and scoped to a namespace, type, member, etc.
5 |
6 | using System.Diagnostics.CodeAnalysis;
7 |
8 | [assembly: SuppressMessage("Reliability", "CA2007:Consider calling ConfigureAwait on the awaited task", Justification = "xunit")]
9 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/cli/Azure.IIoT.OpcUa.Publisher.Testing.Cli.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | Exe
4 | net9.0
5 | true
6 | disable
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/cli/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | using System;
7 |
8 | [assembly: CLSCompliant(false)]
9 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Asset/SimulatedBinding.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | #nullable enable
7 |
8 | namespace Asset
9 | {
10 | using Newtonsoft.Json;
11 |
12 | public sealed class SimulatedForm : Form
13 | {
14 | [JsonProperty("sim:type")]
15 | public string? PayloadType { get; set; }
16 | [JsonProperty("sim:array")]
17 | public bool IsArray { get; set; }
18 | [JsonProperty("sim:pollingTime")]
19 | public long PollingTime { get; set; }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/FileSystem/FileSystemServerConfiguration.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace FileSystem
7 | {
8 | using System.Runtime.Serialization;
9 |
10 | ///
11 | /// Stores the configuration the file system node manager.
12 | ///
13 | [DataContract(Namespace = Namespaces.FileSystem)]
14 | public class FileSystemServerConfiguration
15 | {
16 | ///
17 | /// The default constructor.
18 | ///
19 | public FileSystemServerConfiguration()
20 | {
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/FileSystem/Namespaces.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace FileSystem
7 | {
8 | ///
9 | /// Defines constants for namespaces used by the application.
10 | ///
11 | public static class Namespaces
12 | {
13 | ///
14 | /// The namespace for the nodes provided by the server.
15 | ///
16 | public const string FileSystem = "FileSystem";
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Boiler/Design/Boiler.NodeIds.csv:
--------------------------------------------------------------------------------
1 | BoilerDrumType,1116,ObjectType
2 | BoilerInputPipeType,1101,ObjectType
3 | BoilerOutputPipeType,1124,ObjectType
4 | Boilers,1240,Object
5 | BoilerStateMachineType,1039,ObjectType
6 | BoilerType,1132,ObjectType
7 | CustomControllerType,513,ObjectType
8 | FlowControllerType,1021,ObjectType
9 | FlowTo,985,ReferenceType
10 | FlowTransmitterType,1032,ObjectType
11 | GenericActuatorType,998,ObjectType
12 | GenericControllerType,210,ObjectType
13 | GenericSensorType,991,ObjectType
14 | HotFlowTo,986,ReferenceType
15 | LevelControllerType,1017,ObjectType
16 | LevelIndicatorType,1025,ObjectType
17 | SignalTo,987,ReferenceType
18 | ValveType,1010,ObjectType
19 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Boiler/Design/Boiler.PredefinedNodes.uanodes:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Boiler/Design/Boiler.PredefinedNodes.uanodes
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Boiler/Design/Boiler.Types.bsd:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Boiler/Design/Boiler.Types.xsd:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/BuildNodesets.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 | setlocal
3 |
4 | pushd Isa95Jobs
5 | echo Building %design%
6 | Opc.Ua.ModelCompiler.exe compile-nodesets -input "Nodesets" -o2 "Design" -uri http://opcfoundation.org/UA/ISA95-JOBCONTROL_V2/
7 | popd
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/HistoricalEvents/Design/HistoricalEvents.NodeIds.csv:
--------------------------------------------------------------------------------
1 | FluidLevelTestReportType,265,ObjectType
2 | InjectionTestReportType,284,ObjectType
3 | Plaforms,303,Object
4 | WellTestReportType,251,ObjectType
5 | WellType,308,ObjectType
6 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/HistoricalEvents/Design/HistoricalEvents.PredefinedNodes.uanodes:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/HistoricalEvents/Design/HistoricalEvents.PredefinedNodes.uanodes
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/HistoricalEvents/Design/HistoricalEvents.Types.bsd:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/HistoricalEvents/Design/HistoricalEvents.Types.xsd:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Isa95Jobs/Design/UAModel.ISA95_JOBCONTROL_V2.NodeIds.permissions.csv:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Isa95Jobs/Design/UAModel.ISA95_JOBCONTROL_V2.NodeIds.permissions.csv
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Isa95Jobs/Design/UAModel.ISA95_JOBCONTROL_V2.PredefinedNodes.uanodes:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Isa95Jobs/Design/UAModel.ISA95_JOBCONTROL_V2.PredefinedNodes.uanodes
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/MemoryBuffer/Design/MemoryBuffer.NodeIds.csv:
--------------------------------------------------------------------------------
1 | MemoryBuffers,1025,Object
2 | MemoryBufferType,1000,ObjectType
3 | MemoryTagType,1018,VariableType
4 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/MemoryBuffer/Design/MemoryBuffer.PredefinedNodes.uanodes:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/MemoryBuffer/Design/MemoryBuffer.PredefinedNodes.uanodes
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/MemoryBuffer/Design/MemoryBuffer.Types.bsd:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/MemoryBuffer/Design/MemoryBuffer.Types.xsd:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/MemoryBuffer/Design/MemoryBufferDesign.csv:
--------------------------------------------------------------------------------
1 | MemoryBufferType,1000,ObjectType
2 | MemoryBufferType_StartAddress,1003,Variable
3 | MemoryBufferType_SizeInBytes,1004,Variable
4 | MemoryTagType,1018,VariableType
5 | MemoryBuffers,1025,Object
6 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Plc/Design/PlcModel.NodeIds.csv:
--------------------------------------------------------------------------------
1 | Plc_BinarySchema,15074,Variable
2 | Plc_XmlSchema,15086,Variable
3 | Plc1,15070,Object
4 | PlcDataType,15032,DataType
5 | PlcDataType_Encoding_DefaultBinary,15072,Object
6 | PlcDataType_Encoding_DefaultJson,15096,Object
7 | PlcDataType_Encoding_DefaultXml,15084,Object
8 | PlcHeaterStateType,15014,DataType
9 | PlcTemperatureType,15001,DataType
10 | PlcTemperatureType_Encoding_DefaultBinary,15004,Object
11 | PlcTemperatureType_Encoding_DefaultJson,15012,Object
12 | PlcTemperatureType_Encoding_DefaultXml,15008,Object
13 | PlcType,15068,ObjectType
14 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Plc/Design/PlcModel.PredefinedNodes.uanodes:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Plc/Design/PlcModel.PredefinedNodes.uanodes
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/SimpleEvents/Design/SimpleEvents.NodeIds.csv:
--------------------------------------------------------------------------------
1 | CycleStepDataType,183,DataType
2 | CycleStepDataType_Encoding_DefaultBinary,228,Object
3 | CycleStepDataType_Encoding_DefaultJson,15003,Object
4 | CycleStepDataType_Encoding_DefaultXml,221,Object
5 | SimpleEvents_BinarySchema,222,Variable
6 | SimpleEvents_XmlSchema,229,Variable
7 | SystemCycleAbortedEventType,197,ObjectType
8 | SystemCycleFinishedEventType,210,ObjectType
9 | SystemCycleStartedEventType,184,ObjectType
10 | SystemCycleStatusEventType,235,ObjectType
11 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/SimpleEvents/Design/SimpleEvents.PredefinedNodes.uanodes:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/SimpleEvents/Design/SimpleEvents.PredefinedNodes.uanodes
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/SimpleEvents/Design/SimpleEvents.Types.bsd:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/TestData/Design/TestData.PredefinedNodes.uanodes:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/TestData/Design/TestData.PredefinedNodes.uanodes
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Vehicles/Design/Vehicles.Instances.NodeIds.csv:
--------------------------------------------------------------------------------
1 | BicycleType,365,DataType
2 | BicycleType_Encoding_DefaultBinary,370,Object
3 | BicycleType_Encoding_DefaultJson,15004,Object
4 | BicycleType_Encoding_DefaultXml,366,Object
5 | ParkingLot,281,Object
6 | ParkingLotType,378,DataType
7 | VehiclesInstances_BinarySchema,353,Variable
8 | VehiclesInstances_XmlSchema,341,Variable
9 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Vehicles/Design/Vehicles.Instances.PredefinedNodes.uanodes:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Vehicles/Design/Vehicles.Instances.PredefinedNodes.uanodes
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Vehicles/Design/Vehicles.Types.NodeIds.csv:
--------------------------------------------------------------------------------
1 | CarType,315,DataType
2 | CarType_Encoding_DefaultBinary,330,Object
3 | CarType_Encoding_DefaultJson,15004,Object
4 | CarType_Encoding_DefaultXml,318,Object
5 | DriverType,341,ObjectType
6 | TruckType,316,DataType
7 | TruckType_Encoding_DefaultBinary,331,Object
8 | TruckType_Encoding_DefaultJson,15005,Object
9 | TruckType_Encoding_DefaultXml,319,Object
10 | Vehicles_BinarySchema,302,Variable
11 | Vehicles_XmlSchema,287,Variable
12 | VehicleType,314,DataType
13 | VehicleType_Encoding_DefaultBinary,329,Object
14 | VehicleType_Encoding_DefaultJson,15003,Object
15 | VehicleType_Encoding_DefaultXml,317,Object
16 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Vehicles/Design/Vehicles.Types.PredefinedNodes.uanodes:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Vehicles/Design/Vehicles.Types.PredefinedNodes.uanodes
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Views/Design/Engineering.NodeIds.csv:
--------------------------------------------------------------------------------
1 | Manufacturer,444,Variable
2 | SerialNumber,443,Variable
3 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Views/Design/Engineering.PredefinedNodes.uanodes:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Views/Design/Engineering.PredefinedNodes.uanodes
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Views/Design/Engineering.Types.bsd:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Views/Design/Engineering.Types.xsd:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Views/Design/EngineeringDesign.csv:
--------------------------------------------------------------------------------
1 | SerialNumber,443,Variable
2 | Manufacturer,444,Variable
3 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Views/Design/Model.NodeIds.csv:
--------------------------------------------------------------------------------
1 | BoilerType,390,ObjectType
2 | Engineering,439,View
3 | FlowControllerType,360,ObjectType
4 | GenericControllerType,345,ObjectType
5 | LevelControllerType,375,ObjectType
6 | Operations,441,View
7 | Plant,442,Object
8 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Views/Design/Model.PredefinedNodes.uanodes:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Views/Design/Model.PredefinedNodes.uanodes
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Views/Design/Model.Types.bsd:
--------------------------------------------------------------------------------
1 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Views/Design/Model.Types.xsd:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Views/Design/Operations.NodeIds.csv:
--------------------------------------------------------------------------------
1 | Measurement,449,Variable
2 | SetPoint,443,Variable
3 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Views/Design/Operations.PredefinedNodes.uanodes:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Views/Design/Operations.PredefinedNodes.uanodes
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Views/Design/Operations.Types.bsd:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Views/Design/Operations.Types.xsd:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Generated/Views/Design/OperationsDesign.csv:
--------------------------------------------------------------------------------
1 | SetPoint,443,Variable
2 | SetPoint_Definition,444,Variable
3 | SetPoint_ValuePrecision,445,Variable
4 | SetPoint_EURange,446,Variable
5 | SetPoint_InstrumentRange,447,Variable
6 | SetPoint_EngineeringUnits,448,Variable
7 | Measurement,449,Variable
8 | Measurement_Definition,450,Variable
9 | Measurement_ValuePrecision,451,Variable
10 | Measurement_EURange,452,Variable
11 | Measurement_InstrumentRange,453,Variable
12 | Measurement_EngineeringUnits,454,Variable
13 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/HistoricalAccess/Data/Dynamic/Boolean.txt:
--------------------------------------------------------------------------------
1 | Boolean,1,1,0,0,0,1,0,0,0,1,1
2 | 10000,10000,0,0,,,Boolean,1
3 | 20000,20000,0,0,,,Boolean,1
4 | 30000,30000,0,0,,,Boolean,0
5 | 40000,40000,0x80000000,0,,,Boolean,0
6 | 50000,50000,0,0,,,Boolean,1
7 | 60000,60000,0,0,,,Boolean,1
8 | 70000,70000,0x40000000,0,,,Boolean,0
9 | 80000,80000,0,0,,,Boolean,1
10 | 90000,90000,0,0,,,Boolean,0
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/HistoricalAccess/Data/Dynamic/Byte.txt:
--------------------------------------------------------------------------------
1 | Byte,1,250,0,0,0,1,0,0,0,100,100
2 | 10000,10000,0,0,,,Byte,11
3 | 20000,20000,0,0,,,Byte,22
4 | 30000,30000,0,0,,,Byte,33
5 | 40000,40000,0x80000000,0,,,Byte,44
6 | 50000,50000,0,0,,,Byte,55
7 | 60000,60000,0,0,,,Byte,66
8 | 70000,70000,0x40000000,0,,,Byte,77
9 | 80000,80000,0,0,,,Byte,88
10 | 90000,90000,0,0,,,Byte,99
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/HistoricalAccess/Data/Dynamic/DateTime.txt:
--------------------------------------------------------------------------------
1 | DateTime,-1,10000,0,0,0,0,0,0,1,100,100
2 | 0,0,0x809B0000,0,,,Null
3 | 2000,2000,0,0,,,DateTime,2013-10-18T16:24:13.000
4 | 25000,25000,0,0,,,DateTime,2013-10-18T17:25:13.000
5 | 28000,28000,0,0,,,DateTime,2013-10-18T18:26:13.575
6 | 39000,39000,0,0,,,DateTime,2013-10-18T19:24:13.575
7 | 42000,42000,0x80000000,0,,,Null
8 | 48000,48000,0,0,,,DateTime,2013-10-18T21:24:13.575
9 | 52000,52000,0,0,,,DateTime,2013-10-18T12:30:13.575
10 | 72000,72000,0,0,,,DateTime,2013-10-18T13:36:13.575
11 | 77000,77000,0x40000000,0,,,DateTime,2013-10-18T14:24:13.575
12 | 83000,83000,0,0,,,DateTime,2013-10-18T16:28:33.575
13 | 86000,86000,0,0,,,DateTime,2013-10-18T18:24:13.575
14 | 90000,90000,0,0,,,DateTime,2013-10-18T19:24:13.575
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/HistoricalAccess/Data/Dynamic/Double.txt:
--------------------------------------------------------------------------------
1 | Double,-1,1000,0,0,0,1,0,0,0,100,100
2 | 10000,10000,0,0,,,Double,10.0
3 | 20000,20000,0,0,,,Double,20.0
4 | 30000,30000,0,0,,,Double,30.0
5 | 40000,40000,0x80000000,0,,,Double,40.0
6 | 50000,50000,0,0,,,Double,50.0
7 | 60000,60000,0,0,,,Double,60.0
8 | 70000,70000,0x40000000,0,,,Double,70.0
9 | 80000,80000,0,0,,,Double,80.0
10 | 90000,90000,0,0,,,Double,90.0
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/HistoricalAccess/Data/Dynamic/Float.txt:
--------------------------------------------------------------------------------
1 | Float,-1,1000,0,0,0,1,0,0,0,100,100
2 | 10000,10000,0,0,,,Float,10.0
3 | 20000,20000,0,0,,,Float,20.0
4 | 30000,30000,0,0,,,Float,30.0
5 | 40000,40000,0x80000000,0,,,Float,40.0
6 | 50000,50000,0,0,,,Float,50.0
7 | 60000,60000,0,0,,,Float,60.0
8 | 70000,70000,0x40000000,0,,,Float,70.0
9 | 80000,80000,0,0,,,Float,80.0
10 | 90000,90000,0,0,,,Float,90.0
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/HistoricalAccess/Data/Dynamic/Int16.txt:
--------------------------------------------------------------------------------
1 | Int16,-1,1000,0,0,0,1,1,0,0,100,100
2 | 10000,10000,0,0,,,Int16,10
3 | 20000,20000,0,0,,,Int16,20
4 | 30000,30000,0,0,,,Int16,30
5 | 40000,40000,0x80000000,0,,,Int16,40
6 | 50000,50000,0,0,,,Int16,50
7 | 60000,60000,0,0,,,Int16,60
8 | 70000,70000,0x40000000,0,,,Int16,70
9 | 80000,80000,0,0,,,Int16,80
10 | 90000,90000,0,0,,,Int16,90
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/HistoricalAccess/Data/Dynamic/Int32.txt:
--------------------------------------------------------------------------------
1 | Int32,-1,1000,0,0,0,1,1,0,0,100,100
2 | 10000,10000,0,0,,,Int32,10
3 | 20000,20000,0,0,,,Int32,20
4 | 30000,30000,0,0,,,Int32,30
5 | 40000,40000,0x80000000,0,,,Int32,40
6 | 50000,50000,0,0,,,Int32,50
7 | 60000,60000,0,0,,,Int32,60
8 | 70000,70000,0x40000000,0,,,Int32,70
9 | 80000,80000,0,0,,,Int32,80
10 | 90000,90000,0,0,,,Int32,90
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/HistoricalAccess/Data/Dynamic/Int64.txt:
--------------------------------------------------------------------------------
1 | Int64,-1,1000,0,0,0,1,1,0,0,100,100
2 | 10000,10000,0,0,,,Int64,10
3 | 20000,20000,0,0,,,Int64,20
4 | 30000,30000,0,0,,,Int64,30
5 | 40000,40000,0x80000000,0,,,Int64,40
6 | 50000,50000,0,0,,,Int64,50
7 | 60000,60000,0,0,,,Int64,60
8 | 70000,70000,0x40000000,0,,,Int64,70
9 | 80000,80000,0,0,,,Int64,80
10 | 90000,90000,0,0,,,Int64,90
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/HistoricalAccess/Data/Dynamic/SByte.txt:
--------------------------------------------------------------------------------
1 | SByte,-1,125,0,0,0,1,0,0,0,100,100
2 | 10000,10000,0,0,,,SByte,11
3 | 20000,20000,0,0,,,SByte,22
4 | 30000,30000,0,0,,,SByte,33
5 | 40000,40000,0x80000000,0,,,SByte,44
6 | 50000,50000,0,0,,,SByte,55
7 | 60000,60000,0,0,,,SByte,66
8 | 70000,70000,0x40000000,0,,,SByte,77
9 | 80000,80000,0,0,,,SByte,88
10 | 90000,90000,0,0,,,SByte,99
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/HistoricalAccess/Data/Dynamic/String.txt:
--------------------------------------------------------------------------------
1 | String,-1,10000,0,0,0,0,0,0,1,100,100
2 | 0,0,0x809B0000,0,,,Null
3 | 2000,2000,0,0,,,String,abcd
4 | 25000,25000,0,0,,,String,efgh
5 | 28000,28000,0,0,,,String,ijkl
6 | 39000,39000,0,0,,,String,mnop
7 | 42000,42000,0x80000000,0,,,Null
8 | 48000,48000,0,0,,,String,qrst
9 | 52000,52000,0,0,,,String,uvw
10 | 72000,72000,0,0,,,String,xyza
11 | 77000,77000,0x40000000,0,,,String,bcd
12 | 83000,83000,0,0,,,String,egh
13 | 86000,86000,0,0,,,String,sadga
14 | 90000,90000,0,0,,,String,erfhrty
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/HistoricalAccess/Data/Dynamic/UInt16.txt:
--------------------------------------------------------------------------------
1 | UInt16,-1,1000,0,0,0,1,1,0,0,100,100
2 | 10000,10000,0,0,,,UInt16,10
3 | 20000,20000,0,0,,,UInt16,20
4 | 30000,30000,0,0,,,UInt16,30
5 | 40000,40000,0x80000000,0,,,UInt16,40
6 | 50000,50000,0,0,,,UInt16,50
7 | 60000,60000,0,0,,,UInt16,60
8 | 70000,70000,0x40000000,0,,,UInt16,70
9 | 80000,80000,0,0,,,UInt16,80
10 | 90000,90000,0,0,,,UInt16,90
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/HistoricalAccess/Data/Dynamic/UInt32.txt:
--------------------------------------------------------------------------------
1 | UInt32,-1,1000,0,0,0,1,1,0,0,100,100
2 | 10000,10000,0,0,,,UInt32,10
3 | 20000,20000,0,0,,,UInt32,20
4 | 30000,30000,0,0,,,UInt32,30
5 | 40000,40000,0x80000000,0,,,UInt32,40
6 | 50000,50000,0,0,,,UInt32,50
7 | 60000,60000,0,0,,,UInt32,60
8 | 70000,70000,0x40000000,0,,,UInt32,70
9 | 80000,80000,0,0,,,UInt32,80
10 | 90000,90000,0,0,,,UInt32,90
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/HistoricalAccess/Data/Dynamic/UInt64.txt:
--------------------------------------------------------------------------------
1 | UInt64,-1,1000,0,0,0,1,1,0,0,100,100
2 | 10000,10000,0,0,,,UInt64,10
3 | 20000,20000,0,0,,,UInt64,20
4 | 30000,30000,0,0,,,UInt64,30
5 | 40000,40000,0x80000000,0,,,UInt64,40
6 | 50000,50000,0,0,,,UInt64,50
7 | 60000,60000,0,0,,,UInt64,60
8 | 70000,70000,0x40000000,0,,,UInt64,70
9 | 80000,80000,0,0,,,UInt64,80
10 | 90000,90000,0,0,,,UInt64,90
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/HistoricalAccess/Data/Sample/Boolean.txt:
--------------------------------------------------------------------------------
1 | Boolean,-1,10000,0,0,0,0,1,0,1,100,100
2 | 2000,2000,0,0,,,Boolean,true
3 | 25000,25000,0,0,,,Boolean,false
4 | 28000,28000,0,0,,,Boolean,true
5 | 39000,39000,0,0,,,Boolean,true
6 | 42000,42000,0x80000000,0,,,Null
7 | 48000,48000,0,0,,,Boolean,true
8 | 52000,52000,0,0,,,Boolean,false
9 | 72000,72000,0,0,,,Boolean,false
10 | 77000,77000,0x40000000,0,,,Boolean,true
11 | 83000,83000,0,0,,,Boolean,true
12 | 86000,86000,0,0,,,Boolean,false
13 | 90000,90000,0,0,,,Boolean,true
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/HistoricalAccess/Data/Sample/Byte.txt:
--------------------------------------------------------------------------------
1 | Byte,-1,10000,0,0,0,0,0,0,0,100,100
2 | 10000,10000,0,0,,,Byte,250
3 | 20000,20000,0,0,,,Byte,230
4 | 30000,30000,0,0,,,Byte,150
5 | 40000,40000,0x80000000,0,,,Byte,120
6 | 40000,40000,0,-1,,,100000,Operator,Someone pulled the plug.
7 | 50000,50000,0,0,,,Byte,100
8 | 60000,60000,0,0,,,Byte,80
9 | 70000,70000,0x40000000,0,,,Byte,70
10 | 80000,80000,0,0,,,Byte,40
11 | 90000,90000,0,0,,,Byte,20
12 | 90000,90000,0,-1,,,100000,Operator,End of data collection.
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/HistoricalAccess/Data/Sample/ByteString.txt:
--------------------------------------------------------------------------------
1 | ByteString,-1,10000,0,0,0,0,1,0,1,100,100
2 | 2000,2000,0,0,,,ByteString,00010203040506070809
3 | 25000,25000,0,0,,,ByteString,00102030405060708090
4 | 28000,28000,0,0,,,ByteString,01020304050607080900
5 | 39000,39000,0,0,,,ByteString,10203040506070809000
6 | 42000,42000,0x80000000,0,,,Null
7 | 48000,48000,0,0,,,ByteString,02030405060708090001
8 | 52000,52000,0,0,,,ByteString,20304050607080900010
9 | 72000,72000,0,0,,,ByteString,50607080900010203040
10 | 77000,77000,0x40000000,0,,,ByteString,03040506070809000102
11 | 83000,83000,0,0,,,ByteString,03040506070809001020
12 | 86000,86000,0,0,,,ByteString,00010050607080920304
13 | 90000,90000,0,0,,,ByteString,07080900010203040506
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/HistoricalAccess/Data/Sample/DateTime.txt:
--------------------------------------------------------------------------------
1 | DateTime,-1,10000,0,0,0,0,1,0,1,100,100
2 | 2000,2000,0,0,,,DateTime,2013-10-18T16:24:13.000
3 | 25000,25000,0,0,,,DateTime,2013-10-18T17:25:13.000
4 | 28000,28000,0,0,,,DateTime,2013-10-18T18:26:13.575
5 | 39000,39000,0,0,,,DateTime,2013-10-18T19:24:13.575
6 | 42000,42000,0x80000000,0,,,Null
7 | 48000,48000,0,0,,,DateTime,2013-10-18T21:24:13.575
8 | 52000,52000,0,0,,,DateTime,2013-10-18T12:30:13.575
9 | 72000,72000,0,0,,,DateTime,2013-10-18T13:36:13.575
10 | 77000,77000,0x40000000,0,,,DateTime,2013-10-18T14:24:13.575
11 | 83000,83000,0,0,,,DateTime,2013-10-18T16:28:33.575
12 | 86000,86000,0,0,,,DateTime,2013-10-18T18:24:13.575
13 | 90000,90000,0,0,,,DateTime,2013-10-18T19:24:13.575
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/HistoricalAccess/Data/Sample/Double.txt:
--------------------------------------------------------------------------------
1 | Double,-1,10000,0,0,0,0,0,0,0,100,100
2 | 10000,10000,0,0,,,Double,10.0
3 | 20000,20000,0,0,,,Double,20.0
4 | 30000,30000,0,0,,,Double,30.0
5 | 40000,40000,0x80000000,0,,,Double,40.0
6 | 40000,40000,0,-1,,,100000,Operator,Someone pulled the plug.
7 | 50000,50000,0,0,,,Double,50.0
8 | 60000,60000,0,0,,,Double,60.0
9 | 70000,70000,0x40000000,0,,,Double,70.0
10 | 80000,80000,0,0,,,Double,80.0
11 | 90000,90000,0,0,,,Double,90.0
12 | 90000,90000,0,-1,,,100000,Operator,End of data collection.
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/HistoricalAccess/Data/Sample/Float.txt:
--------------------------------------------------------------------------------
1 | Float,-1,10000,0,0,0,0,0,0,1,100,100
2 | 2000,2000,0,0,,,Float,10
3 | 25000,25000,0,0,,,Float,20
4 | 28000,28000,0,0,,,Float,25
5 | 39000,39000,0,0,,,Float,30
6 | 42000,42000,0x80000000,0,,,Null
7 | 48000,48000,0,0,,,Float,4
8 | 52000,52000,0,0,,,Float,50
9 | 72000,72000,0,0,,,Float,60
10 | 77000,77000,0x40000000,0,,,Float,70
11 | 83000,83000,0,0,,,Float,70
12 | 86000,86000,0,0,,,Float,80
13 | 90000,90000,0,0,,,Float,90
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/HistoricalAccess/Data/Sample/Historian1.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/src/Azure.IIoT.OpcUa.Publisher.Testing/src/HistoricalAccess/Data/Sample/Historian1.xlsx
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/HistoricalAccess/Data/Sample/Int16.txt:
--------------------------------------------------------------------------------
1 | Int16,-1,10000,0,0,0,0,0,0,1,100,100
2 | 2000,2000,0,0,,,Int16,10
3 | 25000,25000,0,0,,,Int16,20
4 | 28000,28000,0,0,,,Int16,25
5 | 39000,39000,0,0,,,Int16,30
6 | 42000,42000,0x80000000,0,,,Null
7 | 48000,48000,0,0,,,Int16,4
8 | 52000,52000,0,0,,,Int16,50
9 | 72000,72000,0,0,,,Int16,60
10 | 77000,77000,0x40000000,0,,,Int16,70
11 | 83000,83000,0,0,,,Int16,70
12 | 86000,86000,0,0,,,Int16,80
13 | 90000,90000,0,0,,,Int16,90
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/HistoricalAccess/Data/Sample/Int32.txt:
--------------------------------------------------------------------------------
1 | Int32,-1,10000,0,0,0,0,1,0,1,100,100
2 | 2000,2000,0,0,,,Int32,10
3 | 25000,25000,0,0,,,Int32,20
4 | 28000,28000,0,0,,,Int32,25
5 | 39000,39000,0,0,,,Int32,30
6 | 42000,42000,0x80000000,0,,,Null
7 | 48000,48000,0,0,,,Int32,40
8 | 52000,52000,0,0,,,Int32,50
9 | 72000,72000,0,0,,,Int32,60
10 | 77000,77000,0x40000000,0,,,Int32,70
11 | 83000,83000,0,0,,,Int32,70
12 | 86000,86000,0,0,,,Int32,80
13 | 90000,90000,0,0,,,Int32,90
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/HistoricalAccess/Data/Sample/Int64.txt:
--------------------------------------------------------------------------------
1 | Int64,-1,10000,0,0,0,0,1,0,1,100,100
2 | 2000,2000,0,0,,,Int64,10
3 | 25000,25000,0,0,,,Int64,20
4 | 28000,28000,0,0,,,Int64,25
5 | 39000,39000,0,0,,,Int64,30
6 | 42000,42000,0x80000000,0,,,Null
7 | 48000,48000,0,0,,,Int64,40
8 | 52000,52000,0,0,,,Int64,50
9 | 72000,72000,0,0,,,Int64,60
10 | 77000,77000,0x40000000,0,,,Int64,70
11 | 83000,83000,0,0,,,Int64,70
12 | 86000,86000,0,0,,,Int64,80
13 | 90000,90000,0,0,,,Int64,90
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/HistoricalAccess/Data/Sample/SByte.txt:
--------------------------------------------------------------------------------
1 | SByte,-1,10000,0,0,0,0,1,0,1,100,100
2 | 2000,2000,0,0,,,SByte,10
3 | 25000,25000,0,0,,,SByte,20
4 | 28000,28000,0,0,,,SByte,25
5 | 39000,39000,0,0,,,SByte,30
6 | 42000,42000,0x80000000,0,,,Null
7 | 48000,48000,0,0,,,SByte,40
8 | 52000,52000,0,0,,,SByte,50
9 | 72000,72000,0,0,,,SByte,60
10 | 77000,77000,0x40000000,0,,,SByte,70
11 | 83000,83000,0,0,,,SByte,70
12 | 86000,86000,0,0,,,SByte,80
13 | 90000,90000,0,0,,,SByte,90
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/HistoricalAccess/Data/Sample/String.txt:
--------------------------------------------------------------------------------
1 | String,-1,10000,0,0,0,0,1,0,1,100,100
2 | 2000,2000,0,0,,,String,jasOEWUT
3 | 25000,25000,0,0,,,String,JWYEJFDLJA
4 | 28000,28000,0,0,,,String,UFDfdc'po
5 | 39000,39000,0,0,,,String,wueyd20897
6 | 42000,42000,0x80000000,0,,,Null
7 | 48000,48000,0,0,,,String,jedf;ocv
8 | 52000,52000,0,0,,,String,e;jphg
9 | 72000,72000,0,0,,,String,shjdj
10 | 77000,77000,0x40000000,0,,,String,poewdrc
11 | 83000,83000,0,0,,,String,ouepofg
12 | 86000,86000,0,0,,,String,eglogf
13 | 90000,90000,0,0,,,String,wetrc
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/HistoricalAccess/Data/Sample/UInt16.txt:
--------------------------------------------------------------------------------
1 | UInt16,-1,10000,0,0,0,0,0,0,1,100,100
2 | 2000,2000,0,0,,,UInt16,10
3 | 25000,25000,0,0,,,UInt16,20
4 | 28000,28000,0,0,,,UInt16,25
5 | 39000,39000,0,0,,,UInt16,30
6 | 42000,42000,0x80000000,0,,,Null
7 | 48000,48000,0,0,,,UInt16,4
8 | 52000,52000,0,0,,,UInt16,50
9 | 72000,72000,0,0,,,UInt16,60
10 | 77000,77000,0x40000000,0,,,UInt16,70
11 | 83000,83000,0,0,,,UInt16,70
12 | 86000,86000,0,0,,,UInt16,80
13 | 90000,90000,0,0,,,UInt16,90
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/HistoricalAccess/Data/Sample/UInt32.txt:
--------------------------------------------------------------------------------
1 | UInt32,-1,10000,0,0,0,0,0,0,1,100,100
2 | 2000,2000,0,0,,,UInt32,10
3 | 25000,25000,0,0,,,UInt32,20
4 | 28000,28000,0,0,,,UInt32,25
5 | 39000,39000,0,0,,,UInt32,30
6 | 42000,42000,0x80000000,0,,,Null
7 | 48000,48000,0,0,,,UInt32,4
8 | 52000,52000,0,0,,,UInt32,50
9 | 72000,72000,0,0,,,UInt32,60
10 | 77000,77000,0x40000000,0,,,UInt32,70
11 | 83000,83000,0,0,,,UInt32,70
12 | 86000,86000,0,0,,,UInt32,80
13 | 90000,90000,0,0,,,UInt32,90
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/HistoricalAccess/Data/Sample/UInt64.txt:
--------------------------------------------------------------------------------
1 | UInt64,-1,10000,0,0,0,0,0,0,1,100,100
2 | 2000,2000,0,0,,,UInt64,10
3 | 25000,25000,0,0,,,UInt64,20
4 | 28000,28000,0,0,,,UInt64,25
5 | 39000,39000,0,0,,,UInt64,30
6 | 42000,42000,0x80000000,0,,,Null
7 | 48000,48000,0,0,,,UInt64,4
8 | 52000,52000,0,0,,,UInt64,50
9 | 72000,72000,0,0,,,UInt64,60
10 | 77000,77000,0x40000000,0,,,UInt64,70
11 | 83000,83000,0,0,,,UInt64,70
12 | 86000,86000,0,0,,,UInt64,80
13 | 90000,90000,0,0,,,UInt64,90
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Plc/NamespaceType.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Plc
7 | {
8 | public enum NamespaceType
9 | {
10 | PlcApplications,
11 | PlcSimulation,
12 | PlcInstance,
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Plc/PluginNodes/NodeType.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Plc.PluginNodes
7 | {
8 | public enum NodeType
9 | {
10 | UIntScalar,
11 | DoubleScalar,
12 | BoolScalar,
13 | UIntArray,
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/src/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | using System;
7 |
8 | [assembly: CLSCompliant(false)]
9 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher.Testing/tests/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | using System;
7 |
8 | [assembly: CLSCompliant(false)]
9 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher/src/IApiKeyProvider.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher
7 | {
8 | ///
9 | /// Provide api key
10 | ///
11 | public interface IApiKeyProvider
12 | {
13 | ///
14 | /// Api key
15 | ///
16 | string? ApiKey { get; }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher/src/IProcessControl.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher
7 | {
8 | ///
9 | /// Process control provider
10 | ///
11 | public interface IProcessControl
12 | {
13 | ///
14 | /// Shutdown publisher
15 | ///
16 | ///
17 | /// false if shutdown failed
18 | bool Shutdown(bool failFast);
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher/src/ISslCertProvider.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher
7 | {
8 | using System.Security.Cryptography.X509Certificates;
9 |
10 | ///
11 | /// Ssl certificate provider
12 | ///
13 | public interface ISslCertProvider
14 | {
15 | ///
16 | /// Certificate
17 | ///
18 | X509Certificate2? Certificate { get; }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher/src/IWriterGroupDiagnostics.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher
7 | {
8 | ///
9 | /// Writer group diagnostics control
10 | ///
11 | public interface IWriterGroupDiagnostics
12 | {
13 | ///
14 | /// Reset diagnostics for writer group
15 | ///
16 | void ResetWriterGroupDiagnostics();
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher/src/IWriterGroupScope.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher
7 | {
8 | using System;
9 |
10 | ///
11 | /// Writer group scope
12 | ///
13 | public interface IWriterGroupScope : IDisposable
14 | {
15 | ///
16 | /// Resolve writer group
17 | ///
18 | IWriterGroupControl WriterGroup { get; }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher/src/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | using System.Runtime.CompilerServices;
7 |
8 | [assembly: InternalsVisibleTo("Azure.IIoT.OpcUa.Publisher.Tests")]
9 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher/src/Stack/ISessionHandle.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Stack
7 | {
8 | using System;
9 |
10 | ///
11 | /// The session handle
12 | ///
13 | public interface ISessionHandle : IDisposable
14 | {
15 | ///
16 | /// Session
17 | ///
18 | public IOpcUaSession Session { get; }
19 |
20 | ///
21 | /// Service call timeout
22 | ///
23 | TimeSpan ServiceCallTimeout { get; }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher/src/Stack/Runtime/CertificateInfo.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Stack
7 | {
8 | ///
9 | /// Certificate information
10 | ///
11 | public class CertificateInfo : CertificateStore
12 | {
13 | ///
14 | /// Subject name
15 | ///
16 | public string? SubjectName { get; set; }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher/src/Stack/Runtime/CertificateStore.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Stack
7 | {
8 | ///
9 | /// Certificate store
10 | ///
11 | public class CertificateStore
12 | {
13 | ///
14 | /// Store type
15 | ///
16 | public string? StoreType { get; set; }
17 |
18 | ///
19 | /// Store path
20 | ///
21 | public string? StorePath { get; set; }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher/src/Stack/Transport/IPortProbe.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Stack.Transport
7 | {
8 | ///
9 | /// Port probe factory
10 | ///
11 | public interface IPortProbe
12 | {
13 | ///
14 | /// Create async probe handler
15 | ///
16 | ///
17 | IAsyncProbe Create();
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher/tests/GlobalSuppressions.cs:
--------------------------------------------------------------------------------
1 | // This file is used by Code Analysis to maintain SuppressMessage
2 | // attributes that are applied to this project.
3 | // Project-level suppressions either have no target or are given
4 | // a specific target and scoped to a namespace, type, member, etc.
5 |
6 | using System.Diagnostics.CodeAnalysis;
7 |
8 | [assembly: SuppressMessage("Reliability", "CA2007:Consider calling ConfigureAwait on the awaited task", Justification = "xunit")]
9 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher/tests/Logging.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Tests
7 | {
8 | using Microsoft.Extensions.Logging;
9 | using Neovolve.Logging.Xunit;
10 |
11 | internal static class Logging
12 | {
13 | ///
14 | /// Default level
15 | ///
16 | public static LogLevel Level => LogLevel.Warning;
17 |
18 | ///
19 | /// Configuration
20 | ///
21 | public static LoggingConfig Config => new() { LogLevel = Level };
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher/tests/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | #if !DEBUG
7 | using Xunit;
8 | [assembly: CollectionBehavior(CollectionBehavior.CollectionPerAssembly, MaxParallelThreads = 4)]
9 | #endif
10 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher/tests/Publisher/empty_pn.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher/tests/Publisher/pn_2.5_legacy.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "opc.tcp://opcplc:50000",
4 | "UseSecurity": false,
5 | "OpcAuthenticationMode": "UsernamePassword",
6 | "OpcAuthenticationUsername": "username",
7 | "OpcAuthenticationPassword": "password",
8 | "NodeId": {
9 | "Identifier": "nsu=http://microsoft.com/Opc/OpcPlc/;s=FastUInt1"
10 | }
11 | }
12 | ]
13 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher/tests/Publisher/pn_2.5_legacy_error.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "opc.tcp://opcplc:50000",
4 | "UseSecurity": false,
5 | "OpcAuthenticationMode": "UsernamePassword",
6 | "OpcAuthenticationUsername": "username",
7 | "OpcAuthenticationPassword": "password",
8 | "NodeId": {
9 | "Identifier": "nsu=http://microsoft.com/Opc/OpcPlc/;s=FastUInt1"
10 | },
11 | "OpcNodes": [
12 | {
13 | "Id": "nsu=http://microsoft.com/Opc/OpcPlc/;s=FastUInt1"
14 | }
15 | ]
16 | }
17 | ]
18 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher/tests/Publisher/pn_opc_nodes_empty.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "DataSetWriterId": "Leaf0_10000_3085991c-b85c-4311-9bfb-a916da952234",
4 | "DataSetName": "Tag_Leaf0_10000_3085991c-b85c-4311-9bfb-a916da952234",
5 | "DataSetWriterGroup": "Leaf0",
6 | "DataSetPublishingInterval": 10000,
7 | "EndpointUrl": "opc.tcp://opcplc:50000",
8 | "UseSecurity": false,
9 | "OpcAuthenticationMode": "Anonymous",
10 | "OpcAuthenticationUsername": "",
11 | "OpcAuthenticationPassword": "",
12 | "OpcNodes": []
13 | }
14 | ]
15 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher/tests/Publisher/pn_opc_nodes_null.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "DataSetWriterId": "Leaf1_10000_2e4fc28f-ffa2-4532-9f22-378d47bbee5d",
4 | "DataSetName": "Tag_Leaf1_10000_2e4fc28f-ffa2-4532-9f22-378d47bbee5d",
5 | "DataSetWriterGroup": "Leaf1",
6 | "DataSetPublishingInterval": 10000,
7 | "EndpointUrl": "opc.tcp://opcplc:50000",
8 | "UseSecurity": false,
9 | "OpcAuthenticationMode": "UsernamePassword",
10 | "OpcAuthenticationUsername": "usr",
11 | "OpcAuthenticationPassword": "pwd"
12 | }
13 | ]
14 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher/tests/Publisher/publishednodes.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "opc.tcp://server1:49580",
4 | "OpcNodes": [
5 | {
6 | "Id": "ns=2;s=Node-Server1",
7 | "DisplayName": "Node-Server1"
8 | }
9 | ]
10 | },
11 | {
12 | "EndpointUrl": "opc.tcp://server2:49580",
13 | "OpcNodes": [
14 | {
15 | "Id": "ns=2;s=Node-Server2",
16 | "DisplayName": "Node-Server2"
17 | }
18 | ]
19 | }
20 | ]
21 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher/tests/Publisher/publishednodeswithoptionalfields.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "EndpointUrl": "opc.tcp://server1:49580",
4 | "UseSecurity": false,
5 | "OpcNodes": [
6 | {
7 | "Id": "ns=2;s=Node-Server1",
8 | "DisplayName": "Node-Server1",
9 | "OpcSamplingInterval": 2000,
10 | "OpcPublishingInterval": 2000
11 | }
12 | ]
13 | },
14 | {
15 | "EndpointUrl": "opc.tcp://server2:49580",
16 | "UseSecurity": false,
17 | "OpcNodes": [
18 | {
19 | "Id": "ns=2;s=Node-Server2",
20 | "DisplayName": "Node-Server2",
21 | "OpcSamplingInterval": 2000,
22 | "OpcPublishingInterval": 2000
23 | }
24 | ]
25 | }
26 | ]
27 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher/tests/Services/Asset/WriteCollection1.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Tests.Services.Asset
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class WriteCollection1 : ICollectionFixture
13 | {
14 | public const string Name = "AssetWrite1";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher/tests/Services/Asset/WriteCollection2.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Tests.Services.Asset
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class WriteCollection2 : ICollectionFixture
13 | {
14 | public const string Name = "AssetWrite2";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher/tests/Services/Asset/WriteCollection3.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Tests.Services.Asset
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class WriteCollection3 : ICollectionFixture
13 | {
14 | public const string Name = "AssetWrite3";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher/tests/Services/Asset/WriteCollection4.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Tests.Services.Asset
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class WriteCollection4 : ICollectionFixture
13 | {
14 | public const string Name = "AssetWrite4";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher/tests/Services/FileSystem/FileCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Tests.Services.FileSystem
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class FileCollection : ICollectionFixture
13 | {
14 | public const string Name = "FileSystem";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher/tests/Services/HistoricalAccess/ReadCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Tests.Services.HistoricalAccess
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class ReadCollection : ICollectionFixture
13 | {
14 | public const string Name = "HistoricalAccessRead";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher/tests/Services/HistoricalEvents/ReadCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Tests.Services.HistoricalEvents
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class ReadCollection : ICollectionFixture
13 | {
14 | public const string Name = "HistoricalEventsRead";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher/tests/Services/TestData/ReadCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Tests.Services.TestData
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class ReadCollection : ICollectionFixture
13 | {
14 | public const string Name = "TestDataRead";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa.Publisher/tests/Services/TestData/WriteCollection.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Publisher.Tests.Services.TestData
7 | {
8 | using Azure.IIoT.OpcUa.Publisher.Testing.Fixtures;
9 | using Xunit;
10 |
11 | [CollectionDefinition(Name)]
12 | public class WriteCollection : ICollectionFixture
13 | {
14 | public const string Name = "TestDataWrite";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa/src/Encoders/AvroFileWriterOptions.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Encoders
7 | {
8 | ///
9 | /// Options
10 | ///
11 | public sealed class AvroFileWriterOptions
12 | {
13 | ///
14 | /// Do not write avro files
15 | ///
16 | public bool Disabled { get; set; }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa/src/Encoders/ConsoleWriterOptions.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Encoders
7 | {
8 | ///
9 | /// Options
10 | ///
11 | public sealed class ConsoleWriterOptions
12 | {
13 | ///
14 | /// Whether to write debug
15 | ///
16 | public bool Enabled { get; set; }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa/src/Encoders/Extensions/JsonSerializerUtcEx.cs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Azure/Industrial-IoT/7d5e5e49ddec4d1e5564e7ba585db5ac5081d807/src/Azure.IIoT.OpcUa/src/Encoders/Extensions/JsonSerializerUtcEx.cs
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa/src/Encoders/IVariantEncoderFactory.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Encoders
7 | {
8 | using Opc.Ua;
9 |
10 | ///
11 | /// Variant codec factory
12 | ///
13 | public interface IVariantEncoderFactory
14 | {
15 | ///
16 | /// Create factory
17 | ///
18 | ///
19 | ///
20 | IVariantEncoder Create(IServiceMessageContext context);
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa/src/Encoders/Schemas/Avro/IAvroSchema.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Encoders.Schemas.Avro
7 | {
8 | using global::Avro;
9 |
10 | ///
11 | /// Avro schema
12 | ///
13 | public interface IAvroSchema
14 | {
15 | ///
16 | /// The avro schema
17 | ///
18 | Schema Schema { get; }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa/src/Encoders/Schemas/SchemaRank.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | namespace Azure.IIoT.OpcUa.Encoders.Schemas
7 | {
8 | ///
9 | /// Schema rank
10 | ///
11 | public enum SchemaRank
12 | {
13 | ///
14 | /// Schema is scalar
15 | ///
16 | Scalar = 0,
17 |
18 | ///
19 | /// Schema is array
20 | ///
21 | Collection = 1,
22 |
23 | ///
24 | /// Schema is matrix
25 | ///
26 | Matrix = 2,
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa/src/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | // ------------------------------------------------------------
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4 | // ------------------------------------------------------------
5 |
6 | using System.Runtime.CompilerServices;
7 |
8 | [assembly: InternalsVisibleTo("Azure.IIoT.OpcUa.Tests")]
9 |
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa/tests/Encoders/Schemas/AvroSchema/Raw/KeepAlive.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "record",
3 | "name": "DataSet",
4 | "fields": [
5 | {
6 | "name": "State",
7 | "type": [
8 | "null",
9 | {
10 | "type": "enum",
11 | "name": "ServerState",
12 | "namespace": "org.opcfoundation.UA",
13 | "aliases": [
14 | "org.opcfoundation.UA.i_x95_852"
15 | ],
16 | "symbols": [
17 | "Running",
18 | "Failed",
19 | "NoConfiguration",
20 | "Suspended",
21 | "Shutdown",
22 | "Test",
23 | "CommunicationFault",
24 | "Unknown"
25 | ],
26 | "default": "Running",
27 | "uaDataTypeId": "i=852"
28 | }
29 | ]
30 | }
31 | ]
32 | }
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa/tests/Encoders/Schemas/AvroSchema/RawReversible/KeepAlive.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "record",
3 | "name": "DataSet",
4 | "fields": [
5 | {
6 | "name": "State",
7 | "type": [
8 | "null",
9 | {
10 | "type": "enum",
11 | "name": "ServerState",
12 | "namespace": "org.opcfoundation.UA",
13 | "aliases": [
14 | "org.opcfoundation.UA.i_x95_852"
15 | ],
16 | "symbols": [
17 | "Running",
18 | "Failed",
19 | "NoConfiguration",
20 | "Suspended",
21 | "Shutdown",
22 | "Test",
23 | "CommunicationFault",
24 | "Unknown"
25 | ],
26 | "default": "Running",
27 | "uaDataTypeId": "i=852"
28 | }
29 | ]
30 | }
31 | ]
32 | }
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa/tests/Encoders/Schemas/JavroSchema/Raw/KeepAlive.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "record",
3 | "name": "DataSet",
4 | "fields": [
5 | {
6 | "name": "State",
7 | "type": {
8 | "type": "enum",
9 | "name": "ServerState",
10 | "namespace": "org.opcfoundation.UA",
11 | "aliases": [
12 | "org.opcfoundation.UA.i_x95_852"
13 | ],
14 | "symbols": [
15 | "Running",
16 | "Failed",
17 | "NoConfiguration",
18 | "Suspended",
19 | "Shutdown",
20 | "Test",
21 | "CommunicationFault",
22 | "Unknown"
23 | ],
24 | "default": "Running",
25 | "uaDataTypeId": "i=852"
26 | }
27 | }
28 | ]
29 | }
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa/tests/Encoders/Schemas/JavroSchema/RawReversible/KeepAlive.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "record",
3 | "name": "DataSet",
4 | "fields": [
5 | {
6 | "name": "State",
7 | "type": {
8 | "type": "enum",
9 | "name": "ServerState",
10 | "namespace": "org.opcfoundation.UA",
11 | "aliases": [
12 | "org.opcfoundation.UA.i_x95_852"
13 | ],
14 | "symbols": [
15 | "Running",
16 | "Failed",
17 | "NoConfiguration",
18 | "Suspended",
19 | "Shutdown",
20 | "Test",
21 | "CommunicationFault",
22 | "Unknown"
23 | ],
24 | "default": "Running",
25 | "uaDataTypeId": "i=852"
26 | }
27 | }
28 | ]
29 | }
--------------------------------------------------------------------------------
/src/Azure.IIoT.OpcUa/tests/GlobalSuppressions.cs:
--------------------------------------------------------------------------------
1 | // This file is used by Code Analysis to maintain SuppressMessage
2 | // attributes that are applied to this project.
3 | // Project-level suppressions either have no target or are given
4 | // a specific target and scoped to a namespace, type, member, etc.
5 |
6 | using System.Diagnostics.CodeAnalysis;
7 |
8 | [assembly: SuppressMessage("Reliability", "CA2007:Consider calling ConfigureAwait on the awaited task", Justification = "xunit")]
9 |
--------------------------------------------------------------------------------
/src/Directory.Build.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/testenvironments.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "1",
3 | "environments": [
4 | {
5 | "name": "Ubuntu-22.04",
6 | "type": "wsl",
7 | "wslDistribution": "Ubuntu-22.04"
8 | }
9 | ]
10 | }
--------------------------------------------------------------------------------
/tools/codecoverage.cmd:
--------------------------------------------------------------------------------
1 | @REM Copyright (c) Microsoft. All rights reserved.
2 | @REM Licensed under the MIT license. See LICENSE file in the project root for full license information.
3 |
4 | @setlocal EnableExtensions EnableDelayedExpansion
5 | @echo off
6 |
7 | set current-path=%~dp0
8 | rem // remove trailing slash
9 | set current-path=%current-path:~0,-1%
10 | set build_root=%current-path%\..
11 |
12 | cd %build_root%
13 |
14 | dotnet test "Industrial-IoT.sln" -v n --configuration Release /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura
15 | dotnet tool install -g dotnet-reportgenerator-globaltool
16 | reportgenerator -reports:./**/coverage.cobertura.xml -targetdir:./CodeCoverage -reporttypes:Badges;Html;HtmlSummary;Cobertura
17 |
18 |
--------------------------------------------------------------------------------
/tools/e2etesting/steps/cleanup.yml:
--------------------------------------------------------------------------------
1 | parameters:
2 | - name: CleanupAppRegistrations
3 | type: boolean
4 |
5 | steps:
6 | - task: AzurePowerShell@5
7 | displayName: "Delete Resource Group"
8 | inputs:
9 | azureSubscription: '$(AzureSubscription)'
10 | azurePowerShellVersion: 'latestVersion'
11 | scriptType: 'InlineScript'
12 | pwsh: true
13 | inline: |
14 | Write-Host "Deleting Resource group '$(ResourceGroupName)'..."
15 | $resourceGroup = Get-AzResourceGroup -Name "$(ResourceGroupName)" -ErrorAction SilentlyContinue
16 | if ($resourceGroup) { $resourceGroup | Remove-AzResourceGroup -Force }
17 | else { Write-Host "Resource group '$(ResourceGroupName)' not found." }
18 |
--------------------------------------------------------------------------------
/tools/scripts/.gitignore:
--------------------------------------------------------------------------------
1 | tools/**
2 | *.exe
--------------------------------------------------------------------------------
/tools/scripts/get-root.ps1:
--------------------------------------------------------------------------------
1 | <#
2 | .SYNOPSIS
3 | find the top most folder with file in it and return the path
4 |
5 | .DESCRIPTION
6 | Generic functionality needed to find a root.
7 | #>
8 | param(
9 | [string] $startDir,
10 | [string] $fileName
11 | )
12 |
13 | if ([string]::IsNullOrEmpty($startDir)) {
14 | $startDir = $PSScriptRoot
15 | }
16 |
17 | $cur = $startDir
18 | while (![string]::IsNullOrEmpty($cur)) {
19 | $test = Join-Path $cur $fileName
20 | if (Test-Path -Path $test -PathType Any) {
21 | return $cur
22 | }
23 | $cur = Split-Path $cur
24 | }
25 | return $startDir
26 |
--------------------------------------------------------------------------------
/version.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://raw.githubusercontent.com/AArnott/Nerdbank.GitVersioning/master/src/NerdBank.GitVersioning/version.schema.json",
3 | "version": "2.9.14",
4 | "publicReleaseRefSpec": [
5 | "^refs/heads/main$",
6 | "^refs/heads/release/\\d+\\.\\d+\\.\\d+"
7 | ],
8 | "cloudBuild": {
9 | "setVersionVariables": true,
10 | "buildNumber": {
11 | "enabled": false
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------