├── .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 | --------------------------------------------------------------------------------