From c6c01899e81412edace1ac96d7eef1eb4cbfd655 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= Date: Wed, 25 Jan 2017 07:02:54 +0100 Subject: Correct spelling of NBAP-PDU-Descriptions --- .../nbapsystem/NBAP-PDU-Descriptions.asn | 916 +++++++++++++++++++++ .../nbapsystem/NBAP-PDU-Discriptions.asn | 916 --------------------- lib/asn1/test/asn1_SUITE_data/test_records.erl | 2 +- lib/asn1/test/testNBAPsystem.erl | 14 +- 4 files changed, 924 insertions(+), 924 deletions(-) create mode 100644 lib/asn1/test/asn1_SUITE_data/nbapsystem/NBAP-PDU-Descriptions.asn delete mode 100644 lib/asn1/test/asn1_SUITE_data/nbapsystem/NBAP-PDU-Discriptions.asn (limited to 'lib/asn1/test') diff --git a/lib/asn1/test/asn1_SUITE_data/nbapsystem/NBAP-PDU-Descriptions.asn b/lib/asn1/test/asn1_SUITE_data/nbapsystem/NBAP-PDU-Descriptions.asn new file mode 100644 index 0000000000..12a4475422 --- /dev/null +++ b/lib/asn1/test/asn1_SUITE_data/nbapsystem/NBAP-PDU-Descriptions.asn @@ -0,0 +1,916 @@ +-- ************************************************************** +-- +-- Elementary Procedure definitions +-- +-- ************************************************************** + +NBAP-PDU-Descriptions { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +umts-Access (20) modules (3) nbap (2) version1 (1) nbap-PDU-Descriptions (0) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** + +IMPORTS + Criticality, + ProcedureID, + MessageDiscriminator, + TransactionID +FROM NBAP-CommonDataTypes + + CommonTransportChannelSetupRequestFDD, + CommonTransportChannelSetupRequestTDD, + CommonTransportChannelSetupResponse, + CommonTransportChannelSetupFailure, + CommonTransportChannelReconfigurationRequestFDD, + CommonTransportChannelReconfigurationRequestTDD, + CommonTransportChannelReconfigurationResponse, + CommonTransportChannelReconfigurationFailure, + CommonTransportChannelDeletionRequest, + CommonTransportChannelDeletionResponse, + BlockResourceRequest, + BlockResourceResponse, + BlockResourceFailure, + UnblockResourceIndication, + AuditFailure, + AuditRequiredIndication, + AuditRequest, + AuditResponse, + CommonMeasurementInitiationRequest, + CommonMeasurementInitiationResponse, + CommonMeasurementInitiationFailure, + CommonMeasurementReport, + CommonMeasurementTerminationRequest, + CommonMeasurementFailureIndication, + CellSetupRequestFDD, + CellSetupRequestTDD, + CellSetupResponse, + CellSetupFailure, + CellReconfigurationRequestFDD, + CellReconfigurationRequestTDD, + CellReconfigurationResponse, + CellReconfigurationFailure, + CellDeletionRequest, + CellDeletionResponse, + InformationExchangeInitiationRequest, + InformationExchangeInitiationResponse, + InformationExchangeInitiationFailure, + InformationReport, + InformationExchangeTerminationRequest, + InformationExchangeFailureIndication, + BearerRearrangementIndication, + ResourceStatusIndication, + SystemInformationUpdateRequest, + SystemInformationUpdateResponse, + SystemInformationUpdateFailure, + ResetRequest, + ResetResponse, + RadioLinkActivationCommandFDD, + RadioLinkActivationCommandTDD, + RadioLinkPreemptionRequiredIndication, + RadioLinkSetupRequestFDD, + RadioLinkSetupRequestTDD, + RadioLinkSetupResponseFDD, + RadioLinkSetupResponseTDD, + RadioLinkSetupFailureFDD, + RadioLinkSetupFailureTDD, + RadioLinkAdditionRequestFDD, + RadioLinkAdditionRequestTDD, + RadioLinkAdditionResponseFDD, + RadioLinkAdditionResponseTDD, + RadioLinkAdditionFailureFDD, + RadioLinkAdditionFailureTDD, + RadioLinkParameterUpdateIndicationFDD, + RadioLinkParameterUpdateIndicationTDD, + RadioLinkReconfigurationPrepareFDD, + RadioLinkReconfigurationPrepareTDD, + RadioLinkReconfigurationReady, + RadioLinkReconfigurationFailure, + RadioLinkReconfigurationCommit, + RadioLinkReconfigurationCancel, + RadioLinkReconfigurationRequestFDD, + RadioLinkReconfigurationRequestTDD, + RadioLinkReconfigurationResponse, + RadioLinkDeletionRequest, + RadioLinkDeletionResponse, + DL-PowerControlRequest, + DL-PowerTimeslotControlRequest, + DedicatedMeasurementInitiationRequest, + DedicatedMeasurementInitiationResponse, + DedicatedMeasurementInitiationFailure, + DedicatedMeasurementReport, + DedicatedMeasurementTerminationRequest, + DedicatedMeasurementFailureIndication, + RadioLinkFailureIndication, + RadioLinkRestoreIndication, + CompressedModeCommand, + ErrorIndication, + PrivateMessage, + PhysicalSharedChannelReconfigurationRequestTDD, + PhysicalSharedChannelReconfigurationRequestFDD, + PhysicalSharedChannelReconfigurationResponse, + PhysicalSharedChannelReconfigurationFailure, + CellSynchronisationInitiationRequestTDD, + CellSynchronisationInitiationResponseTDD, + CellSynchronisationInitiationFailureTDD, + CellSynchronisationReconfigurationRequestTDD, + CellSynchronisationReconfigurationResponseTDD, + CellSynchronisationReconfigurationFailureTDD, + CellSynchronisationAdjustmentRequestTDD, + CellSynchronisationAdjustmentResponseTDD, + CellSynchronisationAdjustmentFailureTDD, + CellSynchronisationReportTDD, + CellSynchronisationTerminationRequestTDD, + CellSynchronisationFailureIndicationTDD +FROM NBAP-PDU-Contents + + id-audit, + id-auditRequired, + id-blockResource, + id-cellDeletion, + id-cellReconfiguration, + id-cellSetup, + id-cellSynchronisationInitiation, + id-cellSynchronisationReconfiguration, + id-cellSynchronisationReporting, + id-cellSynchronisationTermination, + id-cellSynchronisationFailure, + id-commonMeasurementFailure, + id-commonMeasurementInitiation, + id-commonMeasurementReport, + id-commonMeasurementTermination, + id-commonTransportChannelDelete, + id-commonTransportChannelReconfigure, + id-commonTransportChannelSetup, + id-compressedModeCommand, + id-dedicatedMeasurementFailure, + id-dedicatedMeasurementInitiation, + id-dedicatedMeasurementReport, + id-dedicatedMeasurementTermination, + id-downlinkPowerControl, + id-downlinkPowerTimeslotControl, + id-errorIndicationForDedicated, + id-errorIndicationForCommon, + id-informationExchangeFailure, + id-informationExchangeInitiation, + id-informationReporting, + id-informationExchangeTermination, + id-BearerRearrangement, + id-physicalSharedChannelReconfiguration, + id-privateMessageForDedicated, + id-privateMessageForCommon, + id-radioLinkActivation, + id-radioLinkAddition, + id-radioLinkDeletion, + id-radioLinkFailure, + id-radioLinkParameterUpdate, + id-radioLinkPreemption, + id-radioLinkRestoration, + id-radioLinkSetup, + id-reset, + id-resourceStatusIndication, + id-cellSynchronisationAdjustment, + id-synchronisedRadioLinkReconfigurationCancellation, + id-synchronisedRadioLinkReconfigurationCommit, + id-synchronisedRadioLinkReconfigurationPreparation, + id-systemInformationUpdate, + id-unblockResource, + id-unSynchronisedRadioLinkReconfiguration +FROM NBAP-Constants; + +-- ************************************************************** +-- +-- Interface Elementary Procedure Class +-- +-- ************************************************************** + +NBAP-ELEMENTARY-PROCEDURE ::= CLASS { + &InitiatingMessage , + &SuccessfulOutcome OPTIONAL, + &UnsuccessfulOutcome OPTIONAL, + &Outcome OPTIONAL, + &messageDiscriminator MessageDiscriminator, + &procedureID ProcedureID UNIQUE, + &criticality Criticality DEFAULT ignore +} + +WITH SYNTAX { + INITIATING MESSAGE &InitiatingMessage + [SUCCESSFUL OUTCOME &SuccessfulOutcome] + [UNSUCCESSFUL OUTCOME &UnsuccessfulOutcome] + [OUTCOME &Outcome] + MESSAGE DISCRIMINATOR &messageDiscriminator + PROCEDURE ID &procedureID + [CRITICALITY &criticality] +} + +-- ************************************************************** +-- +-- Interface PDU Definition +-- +-- ************************************************************** + +NBAP-PDU ::= CHOICE { + initiatingMessage InitiatingMessage, + succesfulOutcome SuccessfulOutcome, + unsuccesfulOutcome UnsuccessfulOutcome, + outcome Outcome, + ... +} + +InitiatingMessage ::= SEQUENCE { + procedureID NBAP-ELEMENTARY-PROCEDURE.&procedureID ({NBAP-ELEMENTARY-PROCEDURES}), + criticality NBAP-ELEMENTARY-PROCEDURE.&criticality ({NBAP-ELEMENTARY-PROCEDURES}{@procedureID}), + messageDiscriminator NBAP-ELEMENTARY-PROCEDURE.&messageDiscriminator({NBAP-ELEMENTARY-PROCEDURES}{@procedureID}), + transactionID TransactionID, + value NBAP-ELEMENTARY-PROCEDURE.&InitiatingMessage({NBAP-ELEMENTARY-PROCEDURES}{@procedureID}) +} + +SuccessfulOutcome ::= SEQUENCE { + procedureID NBAP-ELEMENTARY-PROCEDURE.&procedureID ({NBAP-ELEMENTARY-PROCEDURES}), + criticality NBAP-ELEMENTARY-PROCEDURE.&criticality ({NBAP-ELEMENTARY-PROCEDURES}{@procedureID}), + messageDiscriminator NBAP-ELEMENTARY-PROCEDURE.&messageDiscriminator({NBAP-ELEMENTARY-PROCEDURES}{@procedureID}), + transactionID TransactionID, + value NBAP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome({NBAP-ELEMENTARY-PROCEDURES}{@procedureID}) +} + +UnsuccessfulOutcome ::= SEQUENCE { + procedureID NBAP-ELEMENTARY-PROCEDURE.&procedureID ({NBAP-ELEMENTARY-PROCEDURES}), + criticality NBAP-ELEMENTARY-PROCEDURE.&criticality ({NBAP-ELEMENTARY-PROCEDURES}{@procedureID}), + messageDiscriminator NBAP-ELEMENTARY-PROCEDURE.&messageDiscriminator({NBAP-ELEMENTARY-PROCEDURES}{@procedureID}), + transactionID TransactionID, + value NBAP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome({NBAP-ELEMENTARY-PROCEDURES}{@procedureID}) +} + +Outcome ::= SEQUENCE { + procedureID NBAP-ELEMENTARY-PROCEDURE.&procedureID ({NBAP-ELEMENTARY-PROCEDURES}), + criticality NBAP-ELEMENTARY-PROCEDURE.&criticality ({NBAP-ELEMENTARY-PROCEDURES}{@procedureID}), + messageDiscriminator NBAP-ELEMENTARY-PROCEDURE.&messageDiscriminator({NBAP-ELEMENTARY-PROCEDURES}{@procedureID}), + transactionID TransactionID, + value NBAP-ELEMENTARY-PROCEDURE.&Outcome ({NBAP-ELEMENTARY-PROCEDURES}{@procedureID}) +} + +-- ************************************************************** +-- +-- Interface Elementary Procedure List +-- +-- ************************************************************** + +NBAP-ELEMENTARY-PROCEDURES NBAP-ELEMENTARY-PROCEDURE ::= { + NBAP-ELEMENTARY-PROCEDURES-CLASS-1 | + NBAP-ELEMENTARY-PROCEDURES-CLASS-2 , + ... +} + +NBAP-ELEMENTARY-PROCEDURES-CLASS-1 NBAP-ELEMENTARY-PROCEDURE ::= { + cellSetupFDD | + cellSetupTDD | + cellReconfigurationFDD | + cellReconfigurationTDD | + cellDeletion | + commonTransportChannelSetupFDD | + commonTransportChannelSetupTDD | + commonTransportChannelReconfigureFDD | + commonTransportChannelReconfigureTDD | + commonTransportChannelDelete | + audit | + blockResource | + radioLinkSetupFDD | + radioLinkSetupTDD | + systemInformationUpdate | + commonMeasurementInitiation | + radioLinkAdditionFDD | + radioLinkAdditionTDD | + radioLinkDeletion | + reset | + synchronisedRadioLinkReconfigurationPreparationFDD | + synchronisedRadioLinkReconfigurationPreparationTDD | + unSynchronisedRadioLinkReconfigurationFDD | + unSynchronisedRadioLinkReconfigurationTDD | + dedicatedMeasurementInitiation | + physicalSharedChannelReconfigurationTDD , + ..., + informationExchangeInitiation | + cellSynchronisationInitiationTDD | + cellSynchronisationReconfigurationTDD | + cellSynchronisationAdjustmentTDD | + physicalSharedChannelReconfigurationFDD +} + +NBAP-ELEMENTARY-PROCEDURES-CLASS-2 NBAP-ELEMENTARY-PROCEDURE ::= { + resourceStatusIndication | + auditRequired | + commonMeasurementReport | + commonMeasurementTermination | + commonMeasurementFailure | + synchronisedRadioLinkReconfigurationCommit | + synchronisedRadioLinkReconfigurationCancellation | + radioLinkFailure | + radioLinkPreemption | + radioLinkRestoration | + dedicatedMeasurementReport | + dedicatedMeasurementTermination | + dedicatedMeasurementFailure | + downlinkPowerControlFDD | + downlinkPowerTimeslotControl | + compressedModeCommand | + unblockResource | + errorIndicationForDedicated | + errorIndicationForCommon | + privateMessageForDedicated | + privateMessageForCommon , + ..., + informationReporting | + informationExchangeTermination | + informationExchangeFailure | + cellSynchronisationReportingTDD | + cellSynchronisationTerminationTDD | + cellSynchronisationFailureTDD | + bearerRearrangement | + radioLinkActivationFDD | + radioLinkActivationTDD | + radioLinkParameterUpdateFDD | + radioLinkParameterUpdateTDD +} + +-- ************************************************************** +-- +-- Interface Elementary Procedures +-- +-- ************************************************************** + +-- Class 1 + +-- *** CellSetup (FDD) *** +cellSetupFDD NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE CellSetupRequestFDD + SUCCESSFUL OUTCOME CellSetupResponse + UNSUCCESSFUL OUTCOME CellSetupFailure + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-cellSetup, ddMode fdd } + CRITICALITY reject +} + +-- *** CellSetup (TDD) *** +cellSetupTDD NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE CellSetupRequestTDD + SUCCESSFUL OUTCOME CellSetupResponse + UNSUCCESSFUL OUTCOME CellSetupFailure + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-cellSetup, ddMode tdd } + CRITICALITY reject +} + +-- *** CellReconfiguration(FDD) *** +cellReconfigurationFDD NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE CellReconfigurationRequestFDD + SUCCESSFUL OUTCOME CellReconfigurationResponse + UNSUCCESSFUL OUTCOME CellReconfigurationFailure + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-cellReconfiguration, ddMode fdd } + CRITICALITY reject +} + +-- *** CellReconfiguration(TDD) *** +cellReconfigurationTDD NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE CellReconfigurationRequestTDD + SUCCESSFUL OUTCOME CellReconfigurationResponse + UNSUCCESSFUL OUTCOME CellReconfigurationFailure + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-cellReconfiguration, ddMode tdd } + CRITICALITY reject +} + +-- *** CellDeletion *** +cellDeletion NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE CellDeletionRequest + SUCCESSFUL OUTCOME CellDeletionResponse + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-cellDeletion, ddMode common } + CRITICALITY reject +} + +-- *** CommonTransportChannelSetup (FDD) *** +commonTransportChannelSetupFDD NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE CommonTransportChannelSetupRequestFDD + SUCCESSFUL OUTCOME CommonTransportChannelSetupResponse + UNSUCCESSFUL OUTCOME CommonTransportChannelSetupFailure + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-commonTransportChannelSetup, ddMode fdd } + CRITICALITY reject +} + +-- *** CommonTransportChannelSetup (TDD) *** +commonTransportChannelSetupTDD NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE CommonTransportChannelSetupRequestTDD + SUCCESSFUL OUTCOME CommonTransportChannelSetupResponse + UNSUCCESSFUL OUTCOME CommonTransportChannelSetupFailure + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-commonTransportChannelSetup, ddMode tdd } + CRITICALITY reject +} + +-- *** CommonTransportChannelReconfigure (FDD) *** +commonTransportChannelReconfigureFDD NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE CommonTransportChannelReconfigurationRequestFDD + SUCCESSFUL OUTCOME CommonTransportChannelReconfigurationResponse + UNSUCCESSFUL OUTCOME CommonTransportChannelReconfigurationFailure + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-commonTransportChannelReconfigure, ddMode fdd } + CRITICALITY reject +} + +-- *** CommonTransportChannelReconfigure (TDD) *** +commonTransportChannelReconfigureTDD NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE CommonTransportChannelReconfigurationRequestTDD + SUCCESSFUL OUTCOME CommonTransportChannelReconfigurationResponse + UNSUCCESSFUL OUTCOME CommonTransportChannelReconfigurationFailure + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-commonTransportChannelReconfigure, ddMode tdd } + CRITICALITY reject +} + +-- *** CommonTransportChannelDelete *** +commonTransportChannelDelete NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE CommonTransportChannelDeletionRequest + SUCCESSFUL OUTCOME CommonTransportChannelDeletionResponse + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-commonTransportChannelDelete, ddMode common } + CRITICALITY reject +} + +-- *** Audit *** +audit NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE AuditRequest + SUCCESSFUL OUTCOME AuditResponse + UNSUCCESSFUL OUTCOME AuditFailure + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-audit, ddMode common } + CRITICALITY reject +} + +-- *** BlockResourceRequest *** +blockResource NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE BlockResourceRequest + SUCCESSFUL OUTCOME BlockResourceResponse + UNSUCCESSFUL OUTCOME BlockResourceFailure + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-blockResource, ddMode common } + CRITICALITY reject +} + +-- *** RadioLinkSetup (FDD) *** +radioLinkSetupFDD NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RadioLinkSetupRequestFDD + SUCCESSFUL OUTCOME RadioLinkSetupResponseFDD + UNSUCCESSFUL OUTCOME RadioLinkSetupFailureFDD + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-radioLinkSetup, ddMode fdd } + CRITICALITY reject +} + +-- *** RadioLinkSetup (TDD) *** +radioLinkSetupTDD NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RadioLinkSetupRequestTDD + SUCCESSFUL OUTCOME RadioLinkSetupResponseTDD + UNSUCCESSFUL OUTCOME RadioLinkSetupFailureTDD + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-radioLinkSetup, ddMode tdd } + CRITICALITY reject +} + +-- *** SystemInformationUpdate *** +systemInformationUpdate NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE SystemInformationUpdateRequest + SUCCESSFUL OUTCOME SystemInformationUpdateResponse + UNSUCCESSFUL OUTCOME SystemInformationUpdateFailure + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-systemInformationUpdate, ddMode common } + CRITICALITY reject +} + +-- *** Reset *** +reset NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE ResetRequest + SUCCESSFUL OUTCOME ResetResponse + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-reset, ddMode common } + CRITICALITY reject +} + +-- *** CommonMeasurementInitiation *** +commonMeasurementInitiation NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE CommonMeasurementInitiationRequest + SUCCESSFUL OUTCOME CommonMeasurementInitiationResponse + UNSUCCESSFUL OUTCOME CommonMeasurementInitiationFailure + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-commonMeasurementInitiation, ddMode common } + CRITICALITY reject +} + +-- *** RadioLinkAddition (FDD) *** +radioLinkAdditionFDD NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RadioLinkAdditionRequestFDD + SUCCESSFUL OUTCOME RadioLinkAdditionResponseFDD + UNSUCCESSFUL OUTCOME RadioLinkAdditionFailureFDD + MESSAGE DISCRIMINATOR dedicated + PROCEDURE ID { procedureCode id-radioLinkAddition, ddMode fdd } + CRITICALITY reject +} + +-- *** RadioLinkAddition (TDD) *** +radioLinkAdditionTDD NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RadioLinkAdditionRequestTDD + SUCCESSFUL OUTCOME RadioLinkAdditionResponseTDD + UNSUCCESSFUL OUTCOME RadioLinkAdditionFailureTDD + MESSAGE DISCRIMINATOR dedicated + PROCEDURE ID { procedureCode id-radioLinkAddition, ddMode tdd } + CRITICALITY reject +} + +-- *** RadioLinkDeletion *** +radioLinkDeletion NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RadioLinkDeletionRequest + SUCCESSFUL OUTCOME RadioLinkDeletionResponse + MESSAGE DISCRIMINATOR dedicated + PROCEDURE ID { procedureCode id-radioLinkDeletion, ddMode common } + CRITICALITY reject +} + +-- *** SynchronisedRadioLinkReconfigurationPreparation (FDD) *** +synchronisedRadioLinkReconfigurationPreparationFDD NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RadioLinkReconfigurationPrepareFDD + SUCCESSFUL OUTCOME RadioLinkReconfigurationReady + UNSUCCESSFUL OUTCOME RadioLinkReconfigurationFailure + MESSAGE DISCRIMINATOR dedicated + PROCEDURE ID { procedureCode id-synchronisedRadioLinkReconfigurationPreparation, ddMode fdd } + CRITICALITY reject +} + +-- *** SynchronisedRadioLinkReconfigurationPreparation (TDD) *** +synchronisedRadioLinkReconfigurationPreparationTDD NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RadioLinkReconfigurationPrepareTDD + SUCCESSFUL OUTCOME RadioLinkReconfigurationReady + UNSUCCESSFUL OUTCOME RadioLinkReconfigurationFailure + MESSAGE DISCRIMINATOR dedicated + PROCEDURE ID { procedureCode id-synchronisedRadioLinkReconfigurationPreparation, ddMode tdd } + CRITICALITY reject +} + +-- *** UnSynchronisedRadioLinkReconfiguration (FDD) *** +unSynchronisedRadioLinkReconfigurationFDD NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RadioLinkReconfigurationRequestFDD + SUCCESSFUL OUTCOME RadioLinkReconfigurationResponse + UNSUCCESSFUL OUTCOME RadioLinkReconfigurationFailure + MESSAGE DISCRIMINATOR dedicated + PROCEDURE ID { procedureCode id-unSynchronisedRadioLinkReconfiguration, ddMode fdd } + CRITICALITY reject +} + +-- *** UnSynchronisedRadioLinkReconfiguration (TDD) *** +unSynchronisedRadioLinkReconfigurationTDD NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RadioLinkReconfigurationRequestTDD + SUCCESSFUL OUTCOME RadioLinkReconfigurationResponse + UNSUCCESSFUL OUTCOME RadioLinkReconfigurationFailure + MESSAGE DISCRIMINATOR dedicated + PROCEDURE ID { procedureCode id-unSynchronisedRadioLinkReconfiguration, ddMode tdd } + CRITICALITY reject +} + +-- *** DedicatedMeasurementInitiation *** +dedicatedMeasurementInitiation NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE DedicatedMeasurementInitiationRequest + SUCCESSFUL OUTCOME DedicatedMeasurementInitiationResponse + UNSUCCESSFUL OUTCOME DedicatedMeasurementInitiationFailure + MESSAGE DISCRIMINATOR dedicated + PROCEDURE ID { procedureCode id-dedicatedMeasurementInitiation, ddMode common } + CRITICALITY reject +} + +-- *** PhysicalSharedChannelReconfiguration (FDD) *** +physicalSharedChannelReconfigurationFDD NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE PhysicalSharedChannelReconfigurationRequestFDD + SUCCESSFUL OUTCOME PhysicalSharedChannelReconfigurationResponse + UNSUCCESSFUL OUTCOME PhysicalSharedChannelReconfigurationFailure + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-physicalSharedChannelReconfiguration, ddMode fdd } + CRITICALITY reject +} + +-- *** PhysicalSharedChannelReconfiguration (TDD) *** +physicalSharedChannelReconfigurationTDD NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE PhysicalSharedChannelReconfigurationRequestTDD + SUCCESSFUL OUTCOME PhysicalSharedChannelReconfigurationResponse + UNSUCCESSFUL OUTCOME PhysicalSharedChannelReconfigurationFailure + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-physicalSharedChannelReconfiguration, ddMode tdd } + CRITICALITY reject +} + +-- *** InformationExchangeInitiation *** +informationExchangeInitiation NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE InformationExchangeInitiationRequest + SUCCESSFUL OUTCOME InformationExchangeInitiationResponse + UNSUCCESSFUL OUTCOME InformationExchangeInitiationFailure + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-informationExchangeInitiation, ddMode common } + CRITICALITY reject +} + +-- *** CellSynchronisationInitiation (TDD only) *** +cellSynchronisationInitiationTDD NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE CellSynchronisationInitiationRequestTDD + SUCCESSFUL OUTCOME CellSynchronisationInitiationResponseTDD + UNSUCCESSFUL OUTCOME CellSynchronisationInitiationFailureTDD + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-cellSynchronisationInitiation, ddMode tdd } + CRITICALITY reject +} + +-- *** CellSynchronisationReconfiguration (TDD only) *** +cellSynchronisationReconfigurationTDD NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE CellSynchronisationReconfigurationRequestTDD + SUCCESSFUL OUTCOME CellSynchronisationReconfigurationResponseTDD + UNSUCCESSFUL OUTCOME CellSynchronisationReconfigurationFailureTDD + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-cellSynchronisationReconfiguration, ddMode tdd } + CRITICALITY reject +} + +-- *** CellSynchronisationAdjustment (TDD only) *** +cellSynchronisationAdjustmentTDD NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE CellSynchronisationAdjustmentRequestTDD + SUCCESSFUL OUTCOME CellSynchronisationAdjustmentResponseTDD + UNSUCCESSFUL OUTCOME CellSynchronisationAdjustmentFailureTDD + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-cellSynchronisationAdjustment, ddMode tdd } + CRITICALITY reject +} + +-- Class 2 + +-- *** ResourceStatusIndication *** +resourceStatusIndication NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE ResourceStatusIndication + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-resourceStatusIndication, ddMode common } + CRITICALITY ignore +} + +-- *** AuditRequired *** +auditRequired NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE AuditRequiredIndication + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-auditRequired, ddMode common } + CRITICALITY ignore +} + +-- *** CommonMeasurementReport *** +commonMeasurementReport NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE CommonMeasurementReport + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-commonMeasurementReport, ddMode common } + CRITICALITY ignore +} + +-- *** CommonMeasurementTermination *** +commonMeasurementTermination NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE CommonMeasurementTerminationRequest + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-commonMeasurementTermination, ddMode common } + CRITICALITY ignore +} + +-- *** CommonMeasurementFailure *** +commonMeasurementFailure NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE CommonMeasurementFailureIndication + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-commonMeasurementFailure, ddMode common } + CRITICALITY ignore +} + +-- *** SynchronisedRadioLinkReconfigurationCommit *** +synchronisedRadioLinkReconfigurationCommit NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RadioLinkReconfigurationCommit + MESSAGE DISCRIMINATOR dedicated + PROCEDURE ID { procedureCode id-synchronisedRadioLinkReconfigurationCommit, ddMode common } + CRITICALITY ignore +} + +-- *** SynchronisedRadioReconfigurationCancellation *** +synchronisedRadioLinkReconfigurationCancellation NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RadioLinkReconfigurationCancel + MESSAGE DISCRIMINATOR dedicated + PROCEDURE ID { procedureCode id-synchronisedRadioLinkReconfigurationCancellation, ddMode common } + CRITICALITY ignore +} + +-- *** RadioLinkFailure *** +radioLinkFailure NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RadioLinkFailureIndication + MESSAGE DISCRIMINATOR dedicated + PROCEDURE ID { procedureCode id-radioLinkFailure, ddMode common } + CRITICALITY ignore +} + +-- *** RadioLinkPreemption *** +radioLinkPreemption NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RadioLinkPreemptionRequiredIndication + MESSAGE DISCRIMINATOR dedicated + PROCEDURE ID { procedureCode id-radioLinkPreemption, ddMode common } + CRITICALITY ignore +} + +-- *** RadioLinkRestoration *** +radioLinkRestoration NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RadioLinkRestoreIndication + MESSAGE DISCRIMINATOR dedicated + PROCEDURE ID { procedureCode id-radioLinkRestoration, ddMode common } + CRITICALITY ignore +} + +-- *** DedicatedMeasurementReport *** +dedicatedMeasurementReport NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE DedicatedMeasurementReport + MESSAGE DISCRIMINATOR dedicated + PROCEDURE ID { procedureCode id-dedicatedMeasurementReport, ddMode common } + CRITICALITY ignore +} + +-- *** DedicatedMeasurementTermination *** +dedicatedMeasurementTermination NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE DedicatedMeasurementTerminationRequest + MESSAGE DISCRIMINATOR dedicated + PROCEDURE ID { procedureCode id-dedicatedMeasurementTermination, ddMode common } + CRITICALITY ignore +} + +-- *** DedicatedMeasurementFailure *** +dedicatedMeasurementFailure NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE DedicatedMeasurementFailureIndication + MESSAGE DISCRIMINATOR dedicated + PROCEDURE ID { procedureCode id-dedicatedMeasurementFailure, ddMode common } + CRITICALITY ignore +} + +-- *** DLPowerControl (FDD only) *** +downlinkPowerControlFDD NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE DL-PowerControlRequest + MESSAGE DISCRIMINATOR dedicated + PROCEDURE ID { procedureCode id-downlinkPowerControl, ddMode fdd } + CRITICALITY ignore +} + +-- *** DLPowerTimeslotControl (TDD only) *** +downlinkPowerTimeslotControl NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE DL-PowerTimeslotControlRequest + MESSAGE DISCRIMINATOR dedicated + PROCEDURE ID { procedureCode id-downlinkPowerTimeslotControl, ddMode tdd } + CRITICALITY ignore +} + +-- *** CompressedModeCommand (FDD only) *** +compressedModeCommand NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE CompressedModeCommand + MESSAGE DISCRIMINATOR dedicated + PROCEDURE ID { procedureCode id-compressedModeCommand, ddMode fdd } + CRITICALITY ignore +} + +-- *** UnblockResourceIndication *** +unblockResource NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UnblockResourceIndication + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-unblockResource, ddMode common } + CRITICALITY ignore +} + +-- *** ErrorIndication for Dedicated procedures *** +errorIndicationForDedicated NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE ErrorIndication + MESSAGE DISCRIMINATOR dedicated + PROCEDURE ID { procedureCode id-errorIndicationForDedicated, ddMode common } + CRITICALITY ignore +} + +-- *** ErrorIndication for Common procedures *** +errorIndicationForCommon NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE ErrorIndication + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-errorIndicationForCommon, ddMode common } + CRITICALITY ignore +} + +-- *** CellSynchronisationReporting (TDD only) *** +cellSynchronisationReportingTDD NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE CellSynchronisationReportTDD + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-cellSynchronisationReporting, ddMode tdd } + CRITICALITY ignore +} + +-- *** CellSynchronisationTermination (TDD only) *** +cellSynchronisationTerminationTDD NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE CellSynchronisationTerminationRequestTDD + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-cellSynchronisationTermination, ddMode tdd } + CRITICALITY ignore +} + +-- *** CellSynchronisationFailure (TDD only) *** +cellSynchronisationFailureTDD NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE CellSynchronisationFailureIndicationTDD + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-cellSynchronisationFailure, ddMode tdd } + CRITICALITY ignore +} + +-- *** PrivateMessage for Dedicated procedures *** +privateMessageForDedicated NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE PrivateMessage + MESSAGE DISCRIMINATOR dedicated + PROCEDURE ID { procedureCode id-privateMessageForDedicated, ddMode common } + CRITICALITY ignore +} + +-- *** PrivateMessage for Common procedures *** +privateMessageForCommon NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE PrivateMessage + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-privateMessageForCommon, ddMode common } + CRITICALITY ignore +} + +-- *** InformationReporting *** +informationReporting NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE InformationReport + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-informationReporting, ddMode common } + CRITICALITY ignore +} + +-- *** InformationExchangeTermination *** +informationExchangeTermination NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE InformationExchangeTerminationRequest + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-informationExchangeTermination, ddMode common } + CRITICALITY ignore +} + +-- *** InformationExchangeFailure *** +informationExchangeFailure NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE InformationExchangeFailureIndication + MESSAGE DISCRIMINATOR common + PROCEDURE ID { procedureCode id-informationExchangeFailure, ddMode common } + CRITICALITY ignore +} + +-- *** BearerRearrangement *** +bearerRearrangement NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE BearerRearrangementIndication + MESSAGE DISCRIMINATOR dedicated + PROCEDURE ID { procedureCode id-BearerRearrangement, ddMode common } + CRITICALITY ignore +} + +-- *** RadioLinkActivation (FDD) *** +radioLinkActivationFDD NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RadioLinkActivationCommandFDD + MESSAGE DISCRIMINATOR dedicated + PROCEDURE ID { procedureCode id-radioLinkActivation, ddMode fdd } + CRITICALITY ignore +} + +-- *** RadioLinkActivation (TDD) *** +radioLinkActivationTDD NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RadioLinkActivationCommandTDD + MESSAGE DISCRIMINATOR dedicated + PROCEDURE ID { procedureCode id-radioLinkActivation, ddMode tdd } + CRITICALITY ignore +} + +-- *** RadioLinkParameterUpdate (FDD) *** +radioLinkParameterUpdateFDD NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RadioLinkParameterUpdateIndicationFDD + MESSAGE DISCRIMINATOR dedicated + PROCEDURE ID { procedureCode id-radioLinkParameterUpdate, ddMode fdd } + CRITICALITY ignore +} + +-- *** RadioLinkParameterUpdate (TDD) *** +radioLinkParameterUpdateTDD NBAP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RadioLinkParameterUpdateIndicationTDD + MESSAGE DISCRIMINATOR dedicated + PROCEDURE ID { procedureCode id-radioLinkParameterUpdate, ddMode tdd } + CRITICALITY ignore +} + +END + diff --git a/lib/asn1/test/asn1_SUITE_data/nbapsystem/NBAP-PDU-Discriptions.asn b/lib/asn1/test/asn1_SUITE_data/nbapsystem/NBAP-PDU-Discriptions.asn deleted file mode 100644 index b9be9934e4..0000000000 --- a/lib/asn1/test/asn1_SUITE_data/nbapsystem/NBAP-PDU-Discriptions.asn +++ /dev/null @@ -1,916 +0,0 @@ --- ************************************************************** --- --- Elementary Procedure definitions --- --- ************************************************************** - -NBAP-PDU-Discriptions { -itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) -umts-Access (20) modules (3) nbap (2) version1 (1) nbap-PDU-Descriptions (0) } - -DEFINITIONS AUTOMATIC TAGS ::= - -BEGIN - --- ************************************************************** --- --- IE parameter types from other modules. --- --- ************************************************************** - -IMPORTS - Criticality, - ProcedureID, - MessageDiscriminator, - TransactionID -FROM NBAP-CommonDataTypes - - CommonTransportChannelSetupRequestFDD, - CommonTransportChannelSetupRequestTDD, - CommonTransportChannelSetupResponse, - CommonTransportChannelSetupFailure, - CommonTransportChannelReconfigurationRequestFDD, - CommonTransportChannelReconfigurationRequestTDD, - CommonTransportChannelReconfigurationResponse, - CommonTransportChannelReconfigurationFailure, - CommonTransportChannelDeletionRequest, - CommonTransportChannelDeletionResponse, - BlockResourceRequest, - BlockResourceResponse, - BlockResourceFailure, - UnblockResourceIndication, - AuditFailure, - AuditRequiredIndication, - AuditRequest, - AuditResponse, - CommonMeasurementInitiationRequest, - CommonMeasurementInitiationResponse, - CommonMeasurementInitiationFailure, - CommonMeasurementReport, - CommonMeasurementTerminationRequest, - CommonMeasurementFailureIndication, - CellSetupRequestFDD, - CellSetupRequestTDD, - CellSetupResponse, - CellSetupFailure, - CellReconfigurationRequestFDD, - CellReconfigurationRequestTDD, - CellReconfigurationResponse, - CellReconfigurationFailure, - CellDeletionRequest, - CellDeletionResponse, - InformationExchangeInitiationRequest, - InformationExchangeInitiationResponse, - InformationExchangeInitiationFailure, - InformationReport, - InformationExchangeTerminationRequest, - InformationExchangeFailureIndication, - BearerRearrangementIndication, - ResourceStatusIndication, - SystemInformationUpdateRequest, - SystemInformationUpdateResponse, - SystemInformationUpdateFailure, - ResetRequest, - ResetResponse, - RadioLinkActivationCommandFDD, - RadioLinkActivationCommandTDD, - RadioLinkPreemptionRequiredIndication, - RadioLinkSetupRequestFDD, - RadioLinkSetupRequestTDD, - RadioLinkSetupResponseFDD, - RadioLinkSetupResponseTDD, - RadioLinkSetupFailureFDD, - RadioLinkSetupFailureTDD, - RadioLinkAdditionRequestFDD, - RadioLinkAdditionRequestTDD, - RadioLinkAdditionResponseFDD, - RadioLinkAdditionResponseTDD, - RadioLinkAdditionFailureFDD, - RadioLinkAdditionFailureTDD, - RadioLinkParameterUpdateIndicationFDD, - RadioLinkParameterUpdateIndicationTDD, - RadioLinkReconfigurationPrepareFDD, - RadioLinkReconfigurationPrepareTDD, - RadioLinkReconfigurationReady, - RadioLinkReconfigurationFailure, - RadioLinkReconfigurationCommit, - RadioLinkReconfigurationCancel, - RadioLinkReconfigurationRequestFDD, - RadioLinkReconfigurationRequestTDD, - RadioLinkReconfigurationResponse, - RadioLinkDeletionRequest, - RadioLinkDeletionResponse, - DL-PowerControlRequest, - DL-PowerTimeslotControlRequest, - DedicatedMeasurementInitiationRequest, - DedicatedMeasurementInitiationResponse, - DedicatedMeasurementInitiationFailure, - DedicatedMeasurementReport, - DedicatedMeasurementTerminationRequest, - DedicatedMeasurementFailureIndication, - RadioLinkFailureIndication, - RadioLinkRestoreIndication, - CompressedModeCommand, - ErrorIndication, - PrivateMessage, - PhysicalSharedChannelReconfigurationRequestTDD, - PhysicalSharedChannelReconfigurationRequestFDD, - PhysicalSharedChannelReconfigurationResponse, - PhysicalSharedChannelReconfigurationFailure, - CellSynchronisationInitiationRequestTDD, - CellSynchronisationInitiationResponseTDD, - CellSynchronisationInitiationFailureTDD, - CellSynchronisationReconfigurationRequestTDD, - CellSynchronisationReconfigurationResponseTDD, - CellSynchronisationReconfigurationFailureTDD, - CellSynchronisationAdjustmentRequestTDD, - CellSynchronisationAdjustmentResponseTDD, - CellSynchronisationAdjustmentFailureTDD, - CellSynchronisationReportTDD, - CellSynchronisationTerminationRequestTDD, - CellSynchronisationFailureIndicationTDD -FROM NBAP-PDU-Contents - - id-audit, - id-auditRequired, - id-blockResource, - id-cellDeletion, - id-cellReconfiguration, - id-cellSetup, - id-cellSynchronisationInitiation, - id-cellSynchronisationReconfiguration, - id-cellSynchronisationReporting, - id-cellSynchronisationTermination, - id-cellSynchronisationFailure, - id-commonMeasurementFailure, - id-commonMeasurementInitiation, - id-commonMeasurementReport, - id-commonMeasurementTermination, - id-commonTransportChannelDelete, - id-commonTransportChannelReconfigure, - id-commonTransportChannelSetup, - id-compressedModeCommand, - id-dedicatedMeasurementFailure, - id-dedicatedMeasurementInitiation, - id-dedicatedMeasurementReport, - id-dedicatedMeasurementTermination, - id-downlinkPowerControl, - id-downlinkPowerTimeslotControl, - id-errorIndicationForDedicated, - id-errorIndicationForCommon, - id-informationExchangeFailure, - id-informationExchangeInitiation, - id-informationReporting, - id-informationExchangeTermination, - id-BearerRearrangement, - id-physicalSharedChannelReconfiguration, - id-privateMessageForDedicated, - id-privateMessageForCommon, - id-radioLinkActivation, - id-radioLinkAddition, - id-radioLinkDeletion, - id-radioLinkFailure, - id-radioLinkParameterUpdate, - id-radioLinkPreemption, - id-radioLinkRestoration, - id-radioLinkSetup, - id-reset, - id-resourceStatusIndication, - id-cellSynchronisationAdjustment, - id-synchronisedRadioLinkReconfigurationCancellation, - id-synchronisedRadioLinkReconfigurationCommit, - id-synchronisedRadioLinkReconfigurationPreparation, - id-systemInformationUpdate, - id-unblockResource, - id-unSynchronisedRadioLinkReconfiguration -FROM NBAP-Constants; - --- ************************************************************** --- --- Interface Elementary Procedure Class --- --- ************************************************************** - -NBAP-ELEMENTARY-PROCEDURE ::= CLASS { - &InitiatingMessage , - &SuccessfulOutcome OPTIONAL, - &UnsuccessfulOutcome OPTIONAL, - &Outcome OPTIONAL, - &messageDiscriminator MessageDiscriminator, - &procedureID ProcedureID UNIQUE, - &criticality Criticality DEFAULT ignore -} - -WITH SYNTAX { - INITIATING MESSAGE &InitiatingMessage - [SUCCESSFUL OUTCOME &SuccessfulOutcome] - [UNSUCCESSFUL OUTCOME &UnsuccessfulOutcome] - [OUTCOME &Outcome] - MESSAGE DISCRIMINATOR &messageDiscriminator - PROCEDURE ID &procedureID - [CRITICALITY &criticality] -} - --- ************************************************************** --- --- Interface PDU Definition --- --- ************************************************************** - -NBAP-PDU ::= CHOICE { - initiatingMessage InitiatingMessage, - succesfulOutcome SuccessfulOutcome, - unsuccesfulOutcome UnsuccessfulOutcome, - outcome Outcome, - ... -} - -InitiatingMessage ::= SEQUENCE { - procedureID NBAP-ELEMENTARY-PROCEDURE.&procedureID ({NBAP-ELEMENTARY-PROCEDURES}), - criticality NBAP-ELEMENTARY-PROCEDURE.&criticality ({NBAP-ELEMENTARY-PROCEDURES}{@procedureID}), - messageDiscriminator NBAP-ELEMENTARY-PROCEDURE.&messageDiscriminator({NBAP-ELEMENTARY-PROCEDURES}{@procedureID}), - transactionID TransactionID, - value NBAP-ELEMENTARY-PROCEDURE.&InitiatingMessage({NBAP-ELEMENTARY-PROCEDURES}{@procedureID}) -} - -SuccessfulOutcome ::= SEQUENCE { - procedureID NBAP-ELEMENTARY-PROCEDURE.&procedureID ({NBAP-ELEMENTARY-PROCEDURES}), - criticality NBAP-ELEMENTARY-PROCEDURE.&criticality ({NBAP-ELEMENTARY-PROCEDURES}{@procedureID}), - messageDiscriminator NBAP-ELEMENTARY-PROCEDURE.&messageDiscriminator({NBAP-ELEMENTARY-PROCEDURES}{@procedureID}), - transactionID TransactionID, - value NBAP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome({NBAP-ELEMENTARY-PROCEDURES}{@procedureID}) -} - -UnsuccessfulOutcome ::= SEQUENCE { - procedureID NBAP-ELEMENTARY-PROCEDURE.&procedureID ({NBAP-ELEMENTARY-PROCEDURES}), - criticality NBAP-ELEMENTARY-PROCEDURE.&criticality ({NBAP-ELEMENTARY-PROCEDURES}{@procedureID}), - messageDiscriminator NBAP-ELEMENTARY-PROCEDURE.&messageDiscriminator({NBAP-ELEMENTARY-PROCEDURES}{@procedureID}), - transactionID TransactionID, - value NBAP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome({NBAP-ELEMENTARY-PROCEDURES}{@procedureID}) -} - -Outcome ::= SEQUENCE { - procedureID NBAP-ELEMENTARY-PROCEDURE.&procedureID ({NBAP-ELEMENTARY-PROCEDURES}), - criticality NBAP-ELEMENTARY-PROCEDURE.&criticality ({NBAP-ELEMENTARY-PROCEDURES}{@procedureID}), - messageDiscriminator NBAP-ELEMENTARY-PROCEDURE.&messageDiscriminator({NBAP-ELEMENTARY-PROCEDURES}{@procedureID}), - transactionID TransactionID, - value NBAP-ELEMENTARY-PROCEDURE.&Outcome ({NBAP-ELEMENTARY-PROCEDURES}{@procedureID}) -} - --- ************************************************************** --- --- Interface Elementary Procedure List --- --- ************************************************************** - -NBAP-ELEMENTARY-PROCEDURES NBAP-ELEMENTARY-PROCEDURE ::= { - NBAP-ELEMENTARY-PROCEDURES-CLASS-1 | - NBAP-ELEMENTARY-PROCEDURES-CLASS-2 , - ... -} - -NBAP-ELEMENTARY-PROCEDURES-CLASS-1 NBAP-ELEMENTARY-PROCEDURE ::= { - cellSetupFDD | - cellSetupTDD | - cellReconfigurationFDD | - cellReconfigurationTDD | - cellDeletion | - commonTransportChannelSetupFDD | - commonTransportChannelSetupTDD | - commonTransportChannelReconfigureFDD | - commonTransportChannelReconfigureTDD | - commonTransportChannelDelete | - audit | - blockResource | - radioLinkSetupFDD | - radioLinkSetupTDD | - systemInformationUpdate | - commonMeasurementInitiation | - radioLinkAdditionFDD | - radioLinkAdditionTDD | - radioLinkDeletion | - reset | - synchronisedRadioLinkReconfigurationPreparationFDD | - synchronisedRadioLinkReconfigurationPreparationTDD | - unSynchronisedRadioLinkReconfigurationFDD | - unSynchronisedRadioLinkReconfigurationTDD | - dedicatedMeasurementInitiation | - physicalSharedChannelReconfigurationTDD , - ..., - informationExchangeInitiation | - cellSynchronisationInitiationTDD | - cellSynchronisationReconfigurationTDD | - cellSynchronisationAdjustmentTDD | - physicalSharedChannelReconfigurationFDD -} - -NBAP-ELEMENTARY-PROCEDURES-CLASS-2 NBAP-ELEMENTARY-PROCEDURE ::= { - resourceStatusIndication | - auditRequired | - commonMeasurementReport | - commonMeasurementTermination | - commonMeasurementFailure | - synchronisedRadioLinkReconfigurationCommit | - synchronisedRadioLinkReconfigurationCancellation | - radioLinkFailure | - radioLinkPreemption | - radioLinkRestoration | - dedicatedMeasurementReport | - dedicatedMeasurementTermination | - dedicatedMeasurementFailure | - downlinkPowerControlFDD | - downlinkPowerTimeslotControl | - compressedModeCommand | - unblockResource | - errorIndicationForDedicated | - errorIndicationForCommon | - privateMessageForDedicated | - privateMessageForCommon , - ..., - informationReporting | - informationExchangeTermination | - informationExchangeFailure | - cellSynchronisationReportingTDD | - cellSynchronisationTerminationTDD | - cellSynchronisationFailureTDD | - bearerRearrangement | - radioLinkActivationFDD | - radioLinkActivationTDD | - radioLinkParameterUpdateFDD | - radioLinkParameterUpdateTDD -} - --- ************************************************************** --- --- Interface Elementary Procedures --- --- ************************************************************** - --- Class 1 - --- *** CellSetup (FDD) *** -cellSetupFDD NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE CellSetupRequestFDD - SUCCESSFUL OUTCOME CellSetupResponse - UNSUCCESSFUL OUTCOME CellSetupFailure - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-cellSetup, ddMode fdd } - CRITICALITY reject -} - --- *** CellSetup (TDD) *** -cellSetupTDD NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE CellSetupRequestTDD - SUCCESSFUL OUTCOME CellSetupResponse - UNSUCCESSFUL OUTCOME CellSetupFailure - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-cellSetup, ddMode tdd } - CRITICALITY reject -} - --- *** CellReconfiguration(FDD) *** -cellReconfigurationFDD NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE CellReconfigurationRequestFDD - SUCCESSFUL OUTCOME CellReconfigurationResponse - UNSUCCESSFUL OUTCOME CellReconfigurationFailure - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-cellReconfiguration, ddMode fdd } - CRITICALITY reject -} - --- *** CellReconfiguration(TDD) *** -cellReconfigurationTDD NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE CellReconfigurationRequestTDD - SUCCESSFUL OUTCOME CellReconfigurationResponse - UNSUCCESSFUL OUTCOME CellReconfigurationFailure - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-cellReconfiguration, ddMode tdd } - CRITICALITY reject -} - --- *** CellDeletion *** -cellDeletion NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE CellDeletionRequest - SUCCESSFUL OUTCOME CellDeletionResponse - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-cellDeletion, ddMode common } - CRITICALITY reject -} - --- *** CommonTransportChannelSetup (FDD) *** -commonTransportChannelSetupFDD NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE CommonTransportChannelSetupRequestFDD - SUCCESSFUL OUTCOME CommonTransportChannelSetupResponse - UNSUCCESSFUL OUTCOME CommonTransportChannelSetupFailure - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-commonTransportChannelSetup, ddMode fdd } - CRITICALITY reject -} - --- *** CommonTransportChannelSetup (TDD) *** -commonTransportChannelSetupTDD NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE CommonTransportChannelSetupRequestTDD - SUCCESSFUL OUTCOME CommonTransportChannelSetupResponse - UNSUCCESSFUL OUTCOME CommonTransportChannelSetupFailure - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-commonTransportChannelSetup, ddMode tdd } - CRITICALITY reject -} - --- *** CommonTransportChannelReconfigure (FDD) *** -commonTransportChannelReconfigureFDD NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE CommonTransportChannelReconfigurationRequestFDD - SUCCESSFUL OUTCOME CommonTransportChannelReconfigurationResponse - UNSUCCESSFUL OUTCOME CommonTransportChannelReconfigurationFailure - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-commonTransportChannelReconfigure, ddMode fdd } - CRITICALITY reject -} - --- *** CommonTransportChannelReconfigure (TDD) *** -commonTransportChannelReconfigureTDD NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE CommonTransportChannelReconfigurationRequestTDD - SUCCESSFUL OUTCOME CommonTransportChannelReconfigurationResponse - UNSUCCESSFUL OUTCOME CommonTransportChannelReconfigurationFailure - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-commonTransportChannelReconfigure, ddMode tdd } - CRITICALITY reject -} - --- *** CommonTransportChannelDelete *** -commonTransportChannelDelete NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE CommonTransportChannelDeletionRequest - SUCCESSFUL OUTCOME CommonTransportChannelDeletionResponse - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-commonTransportChannelDelete, ddMode common } - CRITICALITY reject -} - --- *** Audit *** -audit NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE AuditRequest - SUCCESSFUL OUTCOME AuditResponse - UNSUCCESSFUL OUTCOME AuditFailure - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-audit, ddMode common } - CRITICALITY reject -} - --- *** BlockResourceRequest *** -blockResource NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE BlockResourceRequest - SUCCESSFUL OUTCOME BlockResourceResponse - UNSUCCESSFUL OUTCOME BlockResourceFailure - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-blockResource, ddMode common } - CRITICALITY reject -} - --- *** RadioLinkSetup (FDD) *** -radioLinkSetupFDD NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE RadioLinkSetupRequestFDD - SUCCESSFUL OUTCOME RadioLinkSetupResponseFDD - UNSUCCESSFUL OUTCOME RadioLinkSetupFailureFDD - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-radioLinkSetup, ddMode fdd } - CRITICALITY reject -} - --- *** RadioLinkSetup (TDD) *** -radioLinkSetupTDD NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE RadioLinkSetupRequestTDD - SUCCESSFUL OUTCOME RadioLinkSetupResponseTDD - UNSUCCESSFUL OUTCOME RadioLinkSetupFailureTDD - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-radioLinkSetup, ddMode tdd } - CRITICALITY reject -} - --- *** SystemInformationUpdate *** -systemInformationUpdate NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE SystemInformationUpdateRequest - SUCCESSFUL OUTCOME SystemInformationUpdateResponse - UNSUCCESSFUL OUTCOME SystemInformationUpdateFailure - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-systemInformationUpdate, ddMode common } - CRITICALITY reject -} - --- *** Reset *** -reset NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE ResetRequest - SUCCESSFUL OUTCOME ResetResponse - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-reset, ddMode common } - CRITICALITY reject -} - --- *** CommonMeasurementInitiation *** -commonMeasurementInitiation NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE CommonMeasurementInitiationRequest - SUCCESSFUL OUTCOME CommonMeasurementInitiationResponse - UNSUCCESSFUL OUTCOME CommonMeasurementInitiationFailure - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-commonMeasurementInitiation, ddMode common } - CRITICALITY reject -} - --- *** RadioLinkAddition (FDD) *** -radioLinkAdditionFDD NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE RadioLinkAdditionRequestFDD - SUCCESSFUL OUTCOME RadioLinkAdditionResponseFDD - UNSUCCESSFUL OUTCOME RadioLinkAdditionFailureFDD - MESSAGE DISCRIMINATOR dedicated - PROCEDURE ID { procedureCode id-radioLinkAddition, ddMode fdd } - CRITICALITY reject -} - --- *** RadioLinkAddition (TDD) *** -radioLinkAdditionTDD NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE RadioLinkAdditionRequestTDD - SUCCESSFUL OUTCOME RadioLinkAdditionResponseTDD - UNSUCCESSFUL OUTCOME RadioLinkAdditionFailureTDD - MESSAGE DISCRIMINATOR dedicated - PROCEDURE ID { procedureCode id-radioLinkAddition, ddMode tdd } - CRITICALITY reject -} - --- *** RadioLinkDeletion *** -radioLinkDeletion NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE RadioLinkDeletionRequest - SUCCESSFUL OUTCOME RadioLinkDeletionResponse - MESSAGE DISCRIMINATOR dedicated - PROCEDURE ID { procedureCode id-radioLinkDeletion, ddMode common } - CRITICALITY reject -} - --- *** SynchronisedRadioLinkReconfigurationPreparation (FDD) *** -synchronisedRadioLinkReconfigurationPreparationFDD NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE RadioLinkReconfigurationPrepareFDD - SUCCESSFUL OUTCOME RadioLinkReconfigurationReady - UNSUCCESSFUL OUTCOME RadioLinkReconfigurationFailure - MESSAGE DISCRIMINATOR dedicated - PROCEDURE ID { procedureCode id-synchronisedRadioLinkReconfigurationPreparation, ddMode fdd } - CRITICALITY reject -} - --- *** SynchronisedRadioLinkReconfigurationPreparation (TDD) *** -synchronisedRadioLinkReconfigurationPreparationTDD NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE RadioLinkReconfigurationPrepareTDD - SUCCESSFUL OUTCOME RadioLinkReconfigurationReady - UNSUCCESSFUL OUTCOME RadioLinkReconfigurationFailure - MESSAGE DISCRIMINATOR dedicated - PROCEDURE ID { procedureCode id-synchronisedRadioLinkReconfigurationPreparation, ddMode tdd } - CRITICALITY reject -} - --- *** UnSynchronisedRadioLinkReconfiguration (FDD) *** -unSynchronisedRadioLinkReconfigurationFDD NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE RadioLinkReconfigurationRequestFDD - SUCCESSFUL OUTCOME RadioLinkReconfigurationResponse - UNSUCCESSFUL OUTCOME RadioLinkReconfigurationFailure - MESSAGE DISCRIMINATOR dedicated - PROCEDURE ID { procedureCode id-unSynchronisedRadioLinkReconfiguration, ddMode fdd } - CRITICALITY reject -} - --- *** UnSynchronisedRadioLinkReconfiguration (TDD) *** -unSynchronisedRadioLinkReconfigurationTDD NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE RadioLinkReconfigurationRequestTDD - SUCCESSFUL OUTCOME RadioLinkReconfigurationResponse - UNSUCCESSFUL OUTCOME RadioLinkReconfigurationFailure - MESSAGE DISCRIMINATOR dedicated - PROCEDURE ID { procedureCode id-unSynchronisedRadioLinkReconfiguration, ddMode tdd } - CRITICALITY reject -} - --- *** DedicatedMeasurementInitiation *** -dedicatedMeasurementInitiation NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE DedicatedMeasurementInitiationRequest - SUCCESSFUL OUTCOME DedicatedMeasurementInitiationResponse - UNSUCCESSFUL OUTCOME DedicatedMeasurementInitiationFailure - MESSAGE DISCRIMINATOR dedicated - PROCEDURE ID { procedureCode id-dedicatedMeasurementInitiation, ddMode common } - CRITICALITY reject -} - --- *** PhysicalSharedChannelReconfiguration (FDD) *** -physicalSharedChannelReconfigurationFDD NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE PhysicalSharedChannelReconfigurationRequestFDD - SUCCESSFUL OUTCOME PhysicalSharedChannelReconfigurationResponse - UNSUCCESSFUL OUTCOME PhysicalSharedChannelReconfigurationFailure - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-physicalSharedChannelReconfiguration, ddMode fdd } - CRITICALITY reject -} - --- *** PhysicalSharedChannelReconfiguration (TDD) *** -physicalSharedChannelReconfigurationTDD NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE PhysicalSharedChannelReconfigurationRequestTDD - SUCCESSFUL OUTCOME PhysicalSharedChannelReconfigurationResponse - UNSUCCESSFUL OUTCOME PhysicalSharedChannelReconfigurationFailure - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-physicalSharedChannelReconfiguration, ddMode tdd } - CRITICALITY reject -} - --- *** InformationExchangeInitiation *** -informationExchangeInitiation NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE InformationExchangeInitiationRequest - SUCCESSFUL OUTCOME InformationExchangeInitiationResponse - UNSUCCESSFUL OUTCOME InformationExchangeInitiationFailure - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-informationExchangeInitiation, ddMode common } - CRITICALITY reject -} - --- *** CellSynchronisationInitiation (TDD only) *** -cellSynchronisationInitiationTDD NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE CellSynchronisationInitiationRequestTDD - SUCCESSFUL OUTCOME CellSynchronisationInitiationResponseTDD - UNSUCCESSFUL OUTCOME CellSynchronisationInitiationFailureTDD - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-cellSynchronisationInitiation, ddMode tdd } - CRITICALITY reject -} - --- *** CellSynchronisationReconfiguration (TDD only) *** -cellSynchronisationReconfigurationTDD NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE CellSynchronisationReconfigurationRequestTDD - SUCCESSFUL OUTCOME CellSynchronisationReconfigurationResponseTDD - UNSUCCESSFUL OUTCOME CellSynchronisationReconfigurationFailureTDD - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-cellSynchronisationReconfiguration, ddMode tdd } - CRITICALITY reject -} - --- *** CellSynchronisationAdjustment (TDD only) *** -cellSynchronisationAdjustmentTDD NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE CellSynchronisationAdjustmentRequestTDD - SUCCESSFUL OUTCOME CellSynchronisationAdjustmentResponseTDD - UNSUCCESSFUL OUTCOME CellSynchronisationAdjustmentFailureTDD - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-cellSynchronisationAdjustment, ddMode tdd } - CRITICALITY reject -} - --- Class 2 - --- *** ResourceStatusIndication *** -resourceStatusIndication NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE ResourceStatusIndication - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-resourceStatusIndication, ddMode common } - CRITICALITY ignore -} - --- *** AuditRequired *** -auditRequired NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE AuditRequiredIndication - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-auditRequired, ddMode common } - CRITICALITY ignore -} - --- *** CommonMeasurementReport *** -commonMeasurementReport NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE CommonMeasurementReport - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-commonMeasurementReport, ddMode common } - CRITICALITY ignore -} - --- *** CommonMeasurementTermination *** -commonMeasurementTermination NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE CommonMeasurementTerminationRequest - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-commonMeasurementTermination, ddMode common } - CRITICALITY ignore -} - --- *** CommonMeasurementFailure *** -commonMeasurementFailure NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE CommonMeasurementFailureIndication - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-commonMeasurementFailure, ddMode common } - CRITICALITY ignore -} - --- *** SynchronisedRadioLinkReconfigurationCommit *** -synchronisedRadioLinkReconfigurationCommit NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE RadioLinkReconfigurationCommit - MESSAGE DISCRIMINATOR dedicated - PROCEDURE ID { procedureCode id-synchronisedRadioLinkReconfigurationCommit, ddMode common } - CRITICALITY ignore -} - --- *** SynchronisedRadioReconfigurationCancellation *** -synchronisedRadioLinkReconfigurationCancellation NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE RadioLinkReconfigurationCancel - MESSAGE DISCRIMINATOR dedicated - PROCEDURE ID { procedureCode id-synchronisedRadioLinkReconfigurationCancellation, ddMode common } - CRITICALITY ignore -} - --- *** RadioLinkFailure *** -radioLinkFailure NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE RadioLinkFailureIndication - MESSAGE DISCRIMINATOR dedicated - PROCEDURE ID { procedureCode id-radioLinkFailure, ddMode common } - CRITICALITY ignore -} - --- *** RadioLinkPreemption *** -radioLinkPreemption NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE RadioLinkPreemptionRequiredIndication - MESSAGE DISCRIMINATOR dedicated - PROCEDURE ID { procedureCode id-radioLinkPreemption, ddMode common } - CRITICALITY ignore -} - --- *** RadioLinkRestoration *** -radioLinkRestoration NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE RadioLinkRestoreIndication - MESSAGE DISCRIMINATOR dedicated - PROCEDURE ID { procedureCode id-radioLinkRestoration, ddMode common } - CRITICALITY ignore -} - --- *** DedicatedMeasurementReport *** -dedicatedMeasurementReport NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE DedicatedMeasurementReport - MESSAGE DISCRIMINATOR dedicated - PROCEDURE ID { procedureCode id-dedicatedMeasurementReport, ddMode common } - CRITICALITY ignore -} - --- *** DedicatedMeasurementTermination *** -dedicatedMeasurementTermination NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE DedicatedMeasurementTerminationRequest - MESSAGE DISCRIMINATOR dedicated - PROCEDURE ID { procedureCode id-dedicatedMeasurementTermination, ddMode common } - CRITICALITY ignore -} - --- *** DedicatedMeasurementFailure *** -dedicatedMeasurementFailure NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE DedicatedMeasurementFailureIndication - MESSAGE DISCRIMINATOR dedicated - PROCEDURE ID { procedureCode id-dedicatedMeasurementFailure, ddMode common } - CRITICALITY ignore -} - --- *** DLPowerControl (FDD only) *** -downlinkPowerControlFDD NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE DL-PowerControlRequest - MESSAGE DISCRIMINATOR dedicated - PROCEDURE ID { procedureCode id-downlinkPowerControl, ddMode fdd } - CRITICALITY ignore -} - --- *** DLPowerTimeslotControl (TDD only) *** -downlinkPowerTimeslotControl NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE DL-PowerTimeslotControlRequest - MESSAGE DISCRIMINATOR dedicated - PROCEDURE ID { procedureCode id-downlinkPowerTimeslotControl, ddMode tdd } - CRITICALITY ignore -} - --- *** CompressedModeCommand (FDD only) *** -compressedModeCommand NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE CompressedModeCommand - MESSAGE DISCRIMINATOR dedicated - PROCEDURE ID { procedureCode id-compressedModeCommand, ddMode fdd } - CRITICALITY ignore -} - --- *** UnblockResourceIndication *** -unblockResource NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE UnblockResourceIndication - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-unblockResource, ddMode common } - CRITICALITY ignore -} - --- *** ErrorIndication for Dedicated procedures *** -errorIndicationForDedicated NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE ErrorIndication - MESSAGE DISCRIMINATOR dedicated - PROCEDURE ID { procedureCode id-errorIndicationForDedicated, ddMode common } - CRITICALITY ignore -} - --- *** ErrorIndication for Common procedures *** -errorIndicationForCommon NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE ErrorIndication - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-errorIndicationForCommon, ddMode common } - CRITICALITY ignore -} - --- *** CellSynchronisationReporting (TDD only) *** -cellSynchronisationReportingTDD NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE CellSynchronisationReportTDD - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-cellSynchronisationReporting, ddMode tdd } - CRITICALITY ignore -} - --- *** CellSynchronisationTermination (TDD only) *** -cellSynchronisationTerminationTDD NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE CellSynchronisationTerminationRequestTDD - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-cellSynchronisationTermination, ddMode tdd } - CRITICALITY ignore -} - --- *** CellSynchronisationFailure (TDD only) *** -cellSynchronisationFailureTDD NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE CellSynchronisationFailureIndicationTDD - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-cellSynchronisationFailure, ddMode tdd } - CRITICALITY ignore -} - --- *** PrivateMessage for Dedicated procedures *** -privateMessageForDedicated NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE PrivateMessage - MESSAGE DISCRIMINATOR dedicated - PROCEDURE ID { procedureCode id-privateMessageForDedicated, ddMode common } - CRITICALITY ignore -} - --- *** PrivateMessage for Common procedures *** -privateMessageForCommon NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE PrivateMessage - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-privateMessageForCommon, ddMode common } - CRITICALITY ignore -} - --- *** InformationReporting *** -informationReporting NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE InformationReport - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-informationReporting, ddMode common } - CRITICALITY ignore -} - --- *** InformationExchangeTermination *** -informationExchangeTermination NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE InformationExchangeTerminationRequest - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-informationExchangeTermination, ddMode common } - CRITICALITY ignore -} - --- *** InformationExchangeFailure *** -informationExchangeFailure NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE InformationExchangeFailureIndication - MESSAGE DISCRIMINATOR common - PROCEDURE ID { procedureCode id-informationExchangeFailure, ddMode common } - CRITICALITY ignore -} - --- *** BearerRearrangement *** -bearerRearrangement NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE BearerRearrangementIndication - MESSAGE DISCRIMINATOR dedicated - PROCEDURE ID { procedureCode id-BearerRearrangement, ddMode common } - CRITICALITY ignore -} - --- *** RadioLinkActivation (FDD) *** -radioLinkActivationFDD NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE RadioLinkActivationCommandFDD - MESSAGE DISCRIMINATOR dedicated - PROCEDURE ID { procedureCode id-radioLinkActivation, ddMode fdd } - CRITICALITY ignore -} - --- *** RadioLinkActivation (TDD) *** -radioLinkActivationTDD NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE RadioLinkActivationCommandTDD - MESSAGE DISCRIMINATOR dedicated - PROCEDURE ID { procedureCode id-radioLinkActivation, ddMode tdd } - CRITICALITY ignore -} - --- *** RadioLinkParameterUpdate (FDD) *** -radioLinkParameterUpdateFDD NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE RadioLinkParameterUpdateIndicationFDD - MESSAGE DISCRIMINATOR dedicated - PROCEDURE ID { procedureCode id-radioLinkParameterUpdate, ddMode fdd } - CRITICALITY ignore -} - --- *** RadioLinkParameterUpdate (TDD) *** -radioLinkParameterUpdateTDD NBAP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE RadioLinkParameterUpdateIndicationTDD - MESSAGE DISCRIMINATOR dedicated - PROCEDURE ID { procedureCode id-radioLinkParameterUpdate, ddMode tdd } - CRITICALITY ignore -} - -END - diff --git a/lib/asn1/test/asn1_SUITE_data/test_records.erl b/lib/asn1/test/asn1_SUITE_data/test_records.erl index 9fd07c1449..afb1c8c80b 100644 --- a/lib/asn1/test/asn1_SUITE_data/test_records.erl +++ b/lib/asn1/test/asn1_SUITE_data/test_records.erl @@ -25,7 +25,7 @@ -define(line,put(test_server_loc,{?MODULE,?LINE}),). --include("NBAP-PDU-Discriptions.hrl"). +-include("NBAP-PDU-Descriptions.hrl"). -include("NBAP-PDU-Contents.hrl"). -include("NBAP-Containers.hrl"). -include("NBAP-CommonDataTypes.hrl"). diff --git a/lib/asn1/test/testNBAPsystem.erl b/lib/asn1/test/testNBAPsystem.erl index 1af283af42..8d61ca18ce 100644 --- a/lib/asn1/test/testNBAPsystem.erl +++ b/lib/asn1/test/testNBAPsystem.erl @@ -84,7 +84,7 @@ compile(Config, Options) -> M <- ["NBAP-CommonDataTypes.asn", "NBAP-IEs.asn", "NBAP-PDU-Contents.asn", - "NBAP-PDU-Discriptions.asn", + "NBAP-PDU-Descriptions.asn", "NBAP-Constants.asn", "NBAP-Containers.asn"]], asn1_test_lib:compile_all(Fs, Config, Options), @@ -98,16 +98,16 @@ test(_Erule,Config) -> ticket_5812(Config) -> Msg = v_5812(), - {ok,B2} = 'NBAP-PDU-Discriptions':encode('NBAP-PDU', Msg), + {ok,B2} = 'NBAP-PDU-Descriptions':encode('NBAP-PDU', Msg), V = <<0,28,74,0,3,48,0,0,1,0,123,64,41,0,0,0,126,64,35,95,208,2,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,145,0,1,205,0,0,0,0,2,98,64,1,128>>, ok = compare(V,B2), - {ok,Msg2} = 'NBAP-PDU-Discriptions':decode('NBAP-PDU', B2), + {ok,Msg2} = 'NBAP-PDU-Descriptions':decode('NBAP-PDU', B2), ok = check_record_names(Msg2,Config). enc_audit_req_msg() -> Msg = {initiatingMessage, audit_req_msg()}, - {ok,B} = 'NBAP-PDU-Discriptions':encode('NBAP-PDU', Msg), - {ok,_Msg} = 'NBAP-PDU-Discriptions':decode('NBAP-PDU', B), + {ok,B} = 'NBAP-PDU-Descriptions':encode('NBAP-PDU', Msg), + {ok,_Msg} = 'NBAP-PDU-Descriptions':decode('NBAP-PDU', B), {initiatingMessage, #'InitiatingMessage'{value=#'AuditRequest'{protocolIEs=[{_,114,ignore,_}], protocolExtensions = asn1_NOVALUE}}} = _Msg, @@ -116,8 +116,8 @@ enc_audit_req_msg() -> cell_setup_req_msg_test() -> Msg = {initiatingMessage, cell_setup_req_msg()}, - {ok,B} = 'NBAP-PDU-Discriptions':encode('NBAP-PDU', Msg), - {ok,_Msg} = 'NBAP-PDU-Discriptions':decode('NBAP-PDU', B), + {ok,B} = 'NBAP-PDU-Descriptions':encode('NBAP-PDU', Msg), + {ok,_Msg} = 'NBAP-PDU-Descriptions':decode('NBAP-PDU', B), io:format("Msg: ~P~n~n_Msg: ~P~n",[Msg,15,_Msg,15]), ok. -- cgit v1.2.3 From 13b6d01213c9ff39deafc3dd7672cc96dd6e8ab8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= Date: Wed, 25 Jan 2017 07:26:33 +0100 Subject: testMultipleLevels: Use asn1_test_lib:roundtrip() --- lib/asn1/test/testMultipleLevels.erl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'lib/asn1/test') diff --git a/lib/asn1/test/testMultipleLevels.erl b/lib/asn1/test/testMultipleLevels.erl index c610e59f3d..e9d83665aa 100644 --- a/lib/asn1/test/testMultipleLevels.erl +++ b/lib/asn1/test/testMultipleLevels.erl @@ -24,5 +24,7 @@ main(_) -> Data = {'Top',{short,"abc"},{long,"a long string follows here"}}, - {ok,B} = 'MultipleLevels':encode('Top', Data), - {ok,Data} = 'MultipleLevels':decode('Top', iolist_to_binary(B)). + roundtrip('Top', Data). + +roundtrip(T, V) -> + asn1_test_lib:roundtrip('MultipleLevels', T, V). -- cgit v1.2.3 From 90d2c1140409dec7f28c66922b69a16b7463139b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= Date: Wed, 25 Jan 2017 14:48:31 +0100 Subject: Refactor h323test.erl to simplify debugging --- lib/asn1/test/h323test.erl | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) (limited to 'lib/asn1/test') diff --git a/lib/asn1/test/h323test.erl b/lib/asn1/test/h323test.erl index 935af0ba09..41a9159335 100644 --- a/lib/asn1/test/h323test.erl +++ b/lib/asn1/test/h323test.erl @@ -27,6 +27,8 @@ run(per) -> run(); run(_Rules) -> ok. run() -> + roundtrip('EndpointType', endpoint()), + roundtrip('Alerting-UUIE', alerting_uuie()), roundtrip('H323-UserInformation', alerting_val(), alerting_enc()), roundtrip('H323-UserInformation', connect_val(), connect_enc()), general_string(), @@ -36,18 +38,24 @@ alerting_val() -> {'H323-UserInformation', {'H323-UU-PDU', {alerting, - {'Alerting-UUIE', - {0,0,8,2250,0,2}, - {'EndpointType',asn1_NOVALUE,asn1_NOVALUE,asn1_NOVALUE, - asn1_NOVALUE,asn1_NOVALUE, - {'TerminalInfo',asn1_NOVALUE}, - false,false}, - asn1_NOVALUE, - {'CallIdentifier',<<0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0>>}, - asn1_NOVALUE,asn1_NOVALUE,asn1_NOVALUE,asn1_NOVALUE}}, + alerting_uuie()}, asn1_NOVALUE,asn1_NOVALUE,asn1_NOVALUE,asn1_NOVALUE,asn1_NOVALUE}, asn1_NOVALUE}. +endpoint() -> + {'EndpointType',asn1_NOVALUE,asn1_NOVALUE,asn1_NOVALUE, + asn1_NOVALUE,asn1_NOVALUE, + {'TerminalInfo',asn1_NOVALUE}, + false,false}. + +alerting_uuie() -> + {'Alerting-UUIE', + {0,0,8,2250,0,2}, + endpoint(), + asn1_NOVALUE, + {'CallIdentifier',<<0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0>>}, + asn1_NOVALUE,asn1_NOVALUE,asn1_NOVALUE,asn1_NOVALUE}. + alerting_enc() -> "0380060008914a0002020120110000000000000000000000000000000000". @@ -82,6 +90,9 @@ general_string() -> UI = <<109,64,1,57>>, {ok, _V} = 'MULTIMEDIA-SYSTEM-CONTROL':decode(Type, UI). +roundtrip(T, V) -> + asn1_test_lib:roundtrip('H323-MESSAGES', T, V). + roundtrip(T, V, HexString) -> Enc = asn1_test_lib:hex_to_bin(HexString), Enc = asn1_test_lib:roundtrip_enc('H323-MESSAGES', T, V), -- cgit v1.2.3 From 63ac33729f3df5b7cb1789f78365777d0a6034ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= Date: Thu, 26 Jan 2017 07:40:30 +0100 Subject: Add additional tests of Extension Addition Groups --- lib/asn1/test/asn1_SUITE_data/SeqExtension.asn1 | 11 +++++++ lib/asn1/test/testSeqExtension.erl | 38 +++++++++++++++++++++++++ 2 files changed, 49 insertions(+) (limited to 'lib/asn1/test') diff --git a/lib/asn1/test/asn1_SUITE_data/SeqExtension.asn1 b/lib/asn1/test/asn1_SUITE_data/SeqExtension.asn1 index 5fda19303a..e866ef2f4f 100644 --- a/lib/asn1/test/asn1_SUITE_data/SeqExtension.asn1 +++ b/lib/asn1/test/asn1_SUITE_data/SeqExtension.asn1 @@ -48,6 +48,17 @@ SeqExt6 ::= SEQUENCE [[ i6 [106] INTEGER, i7 [107] INTEGER ]] } +SeqExt7 ::= SEQUENCE +{ + -- The spaces between the ellipsis and the comma will prevent them + -- from being removed. + ... , + [[ a INTEGER (0..65535) OPTIONAL, + b OCTET STRING OPTIONAL, + c BOOLEAN + ]] +} + SeqExt1X ::= XSeqExt1 SeqExt2X ::= XSeqExt2 diff --git a/lib/asn1/test/testSeqExtension.erl b/lib/asn1/test/testSeqExtension.erl index f7885cb002..be1d1c2490 100644 --- a/lib/asn1/test/testSeqExtension.erl +++ b/lib/asn1/test/testSeqExtension.erl @@ -31,6 +31,7 @@ -record('SeqExt4',{bool, int}). -record('SeqExt5',{name, shoesize}). -record('SeqExt6',{i1,i2,i3,i4,i5,i6,i7}). +-record('SeqExt7',{a=asn1_NOVALUE,b=asn1_NOVALUE,c}). -record('SuperSeq',{s1,s2,s3,s4,s5,s6,i}). main(Erule, DataDir, Opts) -> @@ -45,8 +46,35 @@ main(Erule, DataDir, Opts) -> roundtrip('SeqExt4', #'SeqExt4'{bool=true,int=12345}), roundtrip('SeqExt4', #'SeqExt4'{bool=false,int=123456}), + case Erule of + ber -> + %% BER currently does not handle Extension Addition Groups + %% correctly. + ok; + _ -> + v_roundtrip3('SeqExt5', #'SeqExt5'{name=asn1_NOVALUE, + shoesize=asn1_NOVALUE}, + Erule, #{per=>"00", + uper=>"00"}), + v_roundtrip3('SeqExt7', #'SeqExt7'{c=asn1_NOVALUE}, + Erule, #{per=>"00", + uper=>"00"}) + end, roundtrip('SeqExt5', #'SeqExt5'{name = <<"Arne">>,shoesize=47}), + v_roundtrip3('SeqExt7', #'SeqExt7'{c=false}, + Erule, #{per=>"80800100", + uper=>"80808000"}), + v_roundtrip3('SeqExt7', #'SeqExt7'{c=true}, + Erule, #{per=>"80800120", + uper=>"80809000"}), + v_roundtrip3('SeqExt7', #'SeqExt7'{a=777,b = <<16#AA>>,c=false}, + Erule, #{per=>"808006C0 030901AA 00", + uper=>"8082E061 20354000"}), + v_roundtrip3('SeqExt7', #'SeqExt7'{a=8888,c=false}, + Erule, #{per=>"80800480 22B800", + uper=>"8081C457 0000"}), + %% Encode a value with this version of the specification. BigInt = 128638468966, SuperSeq = #'SuperSeq'{s1=#'SeqExt1'{}, @@ -106,6 +134,7 @@ main(Erule, DataDir, Opts) -> v_roundtrip2(Erule, 'SeqExt130', list_to_tuple(['SeqExt130'| lists:duplicate(129, asn1_NOVALUE)++[199]])), + ok. roundtrip(Type, Value) -> @@ -118,6 +147,15 @@ v_roundtrip2(Erule, Type, Value) -> roundtrip2(Type, Value) -> asn1_test_lib:roundtrip_enc('SeqExtension2', Type, Value). +v_roundtrip3(Type, Value, Erule, Map) -> + case maps:find(Erule, Map) of + {ok,Hex} -> + Encoded = asn1_test_lib:hex_to_bin(Hex), + Encoded = asn1_test_lib:roundtrip_enc('SeqExtension', Type, Value); + error -> + asn1_test_lib:roundtrip('SeqExtension', Type, Value) + end. + v(ber, 'SeqExt66') -> "30049F41 017D"; v(per, 'SeqExt66') -> "C0420000 00000000 00004001 FA"; v(uper, 'SeqExt66') -> "D0800000 00000000 00101FA0"; -- cgit v1.2.3 From 8a7f914affce3102e4889c2973ea2d2e99ad633d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= Date: Mon, 16 Jan 2017 16:47:58 +0100 Subject: Teach the ASN.1 compiler the 'maps' option When the 'maps' option is given, the SEQUENCE and SET types are represented as maps instead of as records. Optional and default values must be not be given as asn1_NOVALUE or asn1_DEFAULT in a map passed to the M:encode/2 function; they must be omitted from the map. Similarly, when decoding missing values will be omitted from the map. No .hrl files will be generated when the 'maps' options is used. That means values in an ASN.1 module must be retrieved by calling the appropriate function in generated module. Since we one day hope to get rid of the options 'compact_bit_string', 'legacy_bit_string', and 'legacy_erlang_types', we will not allow them to be combined with the 'maps' option. --- lib/asn1/test/Makefile | 1 + lib/asn1/test/asn1_SUITE.erl | 76 ++++++++++++---- lib/asn1/test/asn1_SUITE_data/Maps.asn1 | 17 ++++ lib/asn1/test/asn1_test_lib.erl | 105 +++++++++++++++++++--- lib/asn1/test/testContextSwitchingTypes.erl | 1 + lib/asn1/test/testInfObj.erl | 1 + lib/asn1/test/testMaps.erl | 50 +++++++++++ lib/asn1/test/testRfcs.erl | 50 ++++++----- lib/asn1/test/testTCAP.erl | 1 + lib/asn1/test/testTimer.erl | 131 +++++++++++++++++++++------- lib/asn1/test/testUniqueObjectSets.erl | 1 + lib/asn1/test/test_compile_options.erl | 28 +++++- 12 files changed, 377 insertions(+), 85 deletions(-) create mode 100644 lib/asn1/test/asn1_SUITE_data/Maps.asn1 create mode 100644 lib/asn1/test/testMaps.erl (limited to 'lib/asn1/test') diff --git a/lib/asn1/test/Makefile b/lib/asn1/test/Makefile index 40575e8a2f..d346bb9e12 100644 --- a/lib/asn1/test/Makefile +++ b/lib/asn1/test/Makefile @@ -82,6 +82,7 @@ MODULES= \ testInfObjExtract \ testParameterizedInfObj \ testFragmented \ + testMaps \ testMergeCompile \ testMultipleLevels \ testDeepTConstr \ diff --git a/lib/asn1/test/asn1_SUITE.erl b/lib/asn1/test/asn1_SUITE.erl index b6430134ab..6769a38b12 100644 --- a/lib/asn1/test/asn1_SUITE.erl +++ b/lib/asn1/test/asn1_SUITE.erl @@ -21,6 +21,9 @@ -module(asn1_SUITE). +%% Suppress compilation of an addititional module compiled for maps. +-define(NO_MAPS_MODULE, asn1_test_lib_no_maps). + -define(only_ber(Func), if Rule =:= ber -> Func; true -> ok @@ -102,6 +105,7 @@ groups() -> testMultipleLevels, testOpt, testSeqDefault, + testMaps, % Uses 'External' {group, [], [testExternal, testSeqExtension]}, @@ -176,8 +180,11 @@ groups() -> {performance, [], [testTimer_ber, + testTimer_ber_maps, testTimer_per, - testTimer_uper]}]. + testTimer_per_maps, + testTimer_uper, + testTimer_uper_maps]}]. %%------------------------------------------------------------------------------ %% Init/end @@ -441,6 +448,16 @@ testDEFAULT(Config, Rule, Opts) -> testDef:main(Rule), testSeqSetDefaultVal:main(Rule, Opts). +testMaps(Config) -> + test(Config, fun testMaps/3, + [{ber,[maps,no_ok_wrapper]}, + {ber,[maps,der,no_ok_wrapper]}, + {per,[maps,no_ok_wrapper]}, + {uper,[maps,no_ok_wrapper]}]). +testMaps(Config, Rule, Opts) -> + asn1_test_lib:compile_all(['Maps'], Config, [Rule|Opts]), + testMaps:main(Rule). + testOpt(Config) -> test(Config, fun testOpt/3). testOpt(Config, Rule, Opts) -> asn1_test_lib:compile("Opt", Config, [Rule|Opts]), @@ -614,12 +631,12 @@ parse(Config) -> [asn1_test_lib:compile(M, Config, [abs]) || M <- test_modules()]. per(Config) -> - test(Config, fun per/3, [per,uper]). + test(Config, fun per/3, [per,uper,{per,[maps]},{uper,[maps]}]). per(Config, Rule, Opts) -> [module_test(M, Config, Rule, Opts) || M <- per_modules()]. ber_other(Config) -> - test(Config, fun ber_other/3, [ber]). + test(Config, fun ber_other/3, [ber,{ber,[maps]}]). ber_other(Config, Rule, Opts) -> [module_test(M, Config, Rule, Opts) || M <- ber_modules()]. @@ -628,7 +645,7 @@ der(Config) -> asn1_test_lib:compile_all(ber_modules(), Config, [der]). module_test(M0, Config, Rule, Opts) -> - asn1_test_lib:compile(M0, Config, [Rule|Opts]), + asn1_test_lib:compile(M0, Config, [Rule,?NO_MAPS_MODULE|Opts]), case list_to_atom(M0) of 'LDAP' -> %% Because of the recursive definition of 'Filter' in @@ -995,7 +1012,9 @@ testS1AP(Config, Rule, Opts) -> testRfcs() -> [{timetrap,{minutes,90}}]. -testRfcs(Config) -> test(Config, fun testRfcs/3, [{ber,[der]}]). +testRfcs(Config) -> test(Config, fun testRfcs/3, + [{ber,[der,?NO_MAPS_MODULE]}, + {ber,[der,maps]}]). testRfcs(Config, Rule, Opts) -> case erlang:system_info(system_architecture) of "sparc-sun-solaris2.10" -> @@ -1010,7 +1029,8 @@ test_compile_options(Config) -> ok = test_compile_options:path(Config), ok = test_compile_options:noobj(Config), ok = test_compile_options:record_name_prefix(Config), - ok = test_compile_options:verbose(Config). + ok = test_compile_options:verbose(Config), + ok = test_compile_options:maps(Config). testDoubleEllipses(Config) -> test(Config, fun testDoubleEllipses/3). testDoubleEllipses(Config, Rule, Opts) -> @@ -1069,7 +1089,7 @@ test_x691(Config, Rule, Opts) -> ok. ticket_6143(Config) -> - ok = test_compile_options:ticket_6143(Config). + asn1_test_lib:compile("AA1", Config, [?NO_MAPS_MODULE]). testExtensionAdditionGroup(Config) -> test(Config, fun testExtensionAdditionGroup/3). @@ -1157,20 +1177,33 @@ END ok = asn1ct:compile(File, [{outdir, PrivDir}]). -timer_compile(Config, Rule) -> - asn1_test_lib:compile_all(["H235-SECURITY-MESSAGES", "H323-MESSAGES"], - Config, [no_ok_wrapper,Rule]). +timer_compile(Config, Opts0) -> + Files = ["H235-SECURITY-MESSAGES", "H323-MESSAGES"], + Opts = [no_ok_wrapper,?NO_MAPS_MODULE|Opts0], + asn1_test_lib:compile_all(Files, Config, Opts). testTimer_ber(Config) -> - timer_compile(Config, ber), + timer_compile(Config, [ber]), testTimer:go(). testTimer_per(Config) -> - timer_compile(Config, per), + timer_compile(Config, [per]), testTimer:go(). testTimer_uper(Config) -> - timer_compile(Config, uper), + timer_compile(Config, [uper]), + testTimer:go(). + +testTimer_ber_maps(Config) -> + timer_compile(Config, [ber,maps]), + testTimer:go(). + +testTimer_per_maps(Config) -> + timer_compile(Config, [per,maps]), + testTimer:go(). + +testTimer_uper_maps(Config) -> + timer_compile(Config, [uper,maps]), testTimer:go(). %% Test of multiple-line comment, OTP-8043 @@ -1179,9 +1212,11 @@ testComment(Config) -> asn1_test_lib:roundtrip('Comment', 'Seq', {'Seq',12,true}). testName2Number(Config) -> - N2NOptions = [{n2n,Type} || Type <- ['CauseMisc', 'CauseProtocol', - 'CauseRadioNetwork', - 'CauseTransport','CauseNas']], + N2NOptions0 = [{n2n,Type} || + Type <- ['CauseMisc', 'CauseProtocol', + 'CauseRadioNetwork', + 'CauseTransport','CauseNas']], + N2NOptions = [?NO_MAPS_MODULE|N2NOptions0], asn1_test_lib:compile("S1AP-IEs", Config, N2NOptions), 0 = 'S1AP-IEs':name2num_CauseMisc('control-processing-overload'), @@ -1191,8 +1226,9 @@ testName2Number(Config) -> %% Test that n2n option generates name2num and num2name functions supporting %% values not within the extension root if the enumeration type has an %% extension marker. - N2NOptionsExt = [{n2n, 'NoExt'}, {n2n, 'Ext'}, {n2n, 'Ext2'}], + N2NOptionsExt = [?NO_MAPS_MODULE,{n2n,'NoExt'},{n2n,'Ext'},{n2n,'Ext2'}], asn1_test_lib:compile("EnumN2N", Config, N2NOptionsExt), + %% Previously, name2num and num2name was not generated if the type didn't %% have an extension marker: 0 = 'EnumN2N':name2num_NoExt('blue'), @@ -1210,9 +1246,11 @@ testName2Number(Config) -> ok. ticket_7407(Config) -> - asn1_test_lib:compile("EUTRA-extract-7407", Config, [uper]), + Opts = [uper,?NO_MAPS_MODULE], + asn1_test_lib:compile("EUTRA-extract-7407", Config, Opts), ticket_7407_code(true), - asn1_test_lib:compile("EUTRA-extract-7407", Config, [uper,no_final_padding]), + asn1_test_lib:compile("EUTRA-extract-7407", Config, + [no_final_padding|Opts]), ticket_7407_code(false). ticket_7407_code(FinalPadding) -> diff --git a/lib/asn1/test/asn1_SUITE_data/Maps.asn1 b/lib/asn1/test/asn1_SUITE_data/Maps.asn1 new file mode 100644 index 0000000000..fd5f373e45 --- /dev/null +++ b/lib/asn1/test/asn1_SUITE_data/Maps.asn1 @@ -0,0 +1,17 @@ +Maps DEFINITIONS AUTOMATIC TAGS ::= +BEGIN + +XY ::= SEQUENCE { x INTEGER DEFAULT 0, y INTEGER DEFAULT 0 } + +xy1 XY ::= { x 42, y 17 } +xy2 XY ::= { } +xy3 XY ::= { y 999 } + +S ::= SEQUENCE { + xy XY DEFAULT { x 100, y 100 }, + os OCTET STRING OPTIONAL +} + +s1 S ::= {} + +END diff --git a/lib/asn1/test/asn1_test_lib.erl b/lib/asn1/test/asn1_test_lib.erl index dc614db4f2..a79958d229 100644 --- a/lib/asn1/test/asn1_test_lib.erl +++ b/lib/asn1/test/asn1_test_lib.erl @@ -25,7 +25,8 @@ hex_to_bin/1, match_value/2, parallel/0, - roundtrip/3,roundtrip/4,roundtrip_enc/3,roundtrip_enc/4]). + roundtrip/3,roundtrip/4,roundtrip_enc/3,roundtrip_enc/4, + map_roundtrip/3]). -include_lib("common_test/include/ct.hrl"). @@ -94,15 +95,58 @@ module(F0) -> list_to_atom(F). %% filename:join(CaseDir, F ++ ".beam"). -compile_file(File, Options) -> +compile_file(File, Options0) -> + Options = [warnings_as_errors|Options0], try - ok = asn1ct:compile(File, [warnings_as_errors|Options]) + ok = asn1ct:compile(File, Options), + ok = compile_maps(File, Options) catch _:Reason -> ct:print("Failed to compile ~s\n~p", [File,Reason]), error end. +compile_maps(File, Options) -> + unload_map_mod(File), + Incompat = [abs,compact_bit_string,legacy_bit_string, + legacy_erlang_types,maps,asn1_test_lib_no_maps], + case lists:any(fun(E) -> lists:member(E, Incompat) end, Options) of + true -> + ok; + false -> + compile_maps_1(File, Options) + end. + +compile_maps_1(File, Options) -> + ok = asn1ct:compile(File, [maps,no_ok_wrapper,noobj|Options]), + OutDir = proplists:get_value(outdir, Options), + Base0 = filename:rootname(filename:basename(File)), + Base = case filename:extension(Base0) of + ".set" -> + filename:rootname(Base0); + _ -> + Base0 + end, + ErlBase = Base ++ ".erl", + ErlFile = filename:join(OutDir, ErlBase), + {ok,Erl0} = file:read_file(ErlFile), + Erl = re:replace(Erl0, <<"-module\\('">>, "&maps_"), + MapsErlFile = filename:join(OutDir, "maps_" ++ ErlBase), + ok = file:write_file(MapsErlFile, Erl), + {ok,_} = compile:file(MapsErlFile, [report,{outdir,OutDir},{i,OutDir}]), + ok. + +unload_map_mod(File0) -> + File1 = filename:basename(File0), + File2 = filename:rootname(File1, ".asn"), + File3 = filename:rootname(File2, ".asn1"), + File4 = filename:rootname(File3, ".py"), + File = filename:rootname(File4, ".set"), + MapMod = list_to_atom("maps_"++File), + code:delete(MapMod), + code:purge(MapMod), + ok. + compile_erlang(Mod, Config, Options) -> DataDir = proplists:get_value(data_dir, Config), CaseDir = proplists:get_value(case_dir, Config), @@ -147,24 +191,60 @@ roundtrip(Mod, Type, Value) -> roundtrip(Mod, Type, Value, Value). roundtrip(Mod, Type, Value, ExpectedValue) -> - {ok,Encoded} = Mod:encode(Type, Value), - {ok,ExpectedValue} = Mod:decode(Type, Encoded), - test_ber_indefinite(Mod, Type, Encoded, ExpectedValue), - ok. + roundtrip_enc(Mod, Type, Value, ExpectedValue). roundtrip_enc(Mod, Type, Value) -> roundtrip_enc(Mod, Type, Value, Value). roundtrip_enc(Mod, Type, Value, ExpectedValue) -> - {ok,Encoded} = Mod:encode(Type, Value), - {ok,ExpectedValue} = Mod:decode(Type, Encoded), + case Mod:encode(Type, Value) of + {ok,Encoded} -> + {ok,ExpectedValue} = Mod:decode(Type, Encoded); + Encoded when is_binary(Encoded) -> + ExpectedValue = Mod:decode(Type, Encoded) + end, + map_roundtrip(Mod, Type, Encoded), test_ber_indefinite(Mod, Type, Encoded, ExpectedValue), Encoded. +map_roundtrip(Mod, Type, Encoded) -> + MapMod = list_to_atom("maps_"++atom_to_list(Mod)), + try MapMod:maps() of + true -> + map_roundtrip_1(MapMod, Type, Encoded) + catch + error:undef -> + ok + end. + %%% %%% Internal functions. %%% +map_roundtrip_1(Mod, Type, Encoded) -> + Decoded = Mod:decode(Type, Encoded), + case Mod:encode(Type, Decoded) of + Encoded -> + ok; + OtherEncoding -> + case is_named_bitstring(Decoded) of + true -> + %% In BER, named BIT STRINGs with different number of + %% trailing zeroes decode to the same value. + ok; + false -> + error({encode_mismatch,Decoded,Encoded,OtherEncoding}) + end + end, + ok. + +is_named_bitstring([H|T]) -> + is_atom(H) andalso is_named_bitstring(T); +is_named_bitstring([]) -> + true; +is_named_bitstring(_) -> + false. + hex2num(C) when $0 =< C, C =< $9 -> C - $0; hex2num(C) when $A =< C, C =< $F -> C - $A + 10; hex2num(C) when $a =< C, C =< $f -> C - $a + 10. @@ -179,7 +259,12 @@ test_ber_indefinite(Mod, Type, Encoded, ExpectedValue) -> case Mod:encoding_rule() of ber -> Indefinite = iolist_to_binary(ber_indefinite(Encoded)), - {ok,ExpectedValue} = Mod:decode(Type, Indefinite); + case Mod:decode(Type, Indefinite) of + {ok,ExpectedValue} -> + ok; + ExpectedValue -> + ok + end; _ -> ok end. diff --git a/lib/asn1/test/testContextSwitchingTypes.erl b/lib/asn1/test/testContextSwitchingTypes.erl index 10012908a9..5688d8afd6 100644 --- a/lib/asn1/test/testContextSwitchingTypes.erl +++ b/lib/asn1/test/testContextSwitchingTypes.erl @@ -90,5 +90,6 @@ check_object_identifier(Tuple) when is_tuple(Tuple) -> enc_dec(T, V0) -> M = 'ContextSwitchingTypes', {ok,Enc} = M:encode(T, V0), + asn1_test_lib:map_roundtrip(M, T, Enc), {ok,V} = M:decode(T, Enc), V. diff --git a/lib/asn1/test/testInfObj.erl b/lib/asn1/test/testInfObj.erl index 5a9f47d865..c519c70cdf 100644 --- a/lib/asn1/test/testInfObj.erl +++ b/lib/asn1/test/testInfObj.erl @@ -197,5 +197,6 @@ roundtrip(M, T, V) -> enc_dec(M, T, V0) -> {ok,Enc} = M:encode(T, V0), + asn1_test_lib:map_roundtrip(M, T, Enc), {ok,V} = M:decode(T, Enc), V. diff --git a/lib/asn1/test/testMaps.erl b/lib/asn1/test/testMaps.erl new file mode 100644 index 0000000000..45dd2255ba --- /dev/null +++ b/lib/asn1/test/testMaps.erl @@ -0,0 +1,50 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2017. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +%% +%% +-module(testMaps). + +-export([main/1]). + +main(_) -> + M = 'Maps', + true = M:maps(), + + true = M:xy1() =:= #{x=>42,y=>17}, + true = M:xy2() =:= #{x=>0,y=>0}, + true = M:xy3() =:= #{x=>0,y=>999}, + true = M:s1() =:= #{xy=>#{x=>100,y=>100}}, + + roundtrip('XY', M:xy1()), + roundtrip('XY', M:xy2()), + roundtrip('XY', M:xy3()), + roundtrip('XY', #{}, #{x=>0,y=>0}), + + roundtrip('S', M:s1()), + roundtrip('S', #{}, #{xy=>#{x=>100,y=>100}}), + roundtrip('S', #{os=><<1,2,3>>}, #{xy=>#{x=>100,y=>100}, + os=><<1,2,3>>}), + + ok. + +roundtrip(Type, Value) -> + roundtrip(Type, Value, Value). + +roundtrip(Type, Value, Expected) -> + asn1_test_lib:roundtrip('Maps', Type, Value, Expected). diff --git a/lib/asn1/test/testRfcs.erl b/lib/asn1/test/testRfcs.erl index da7333ef98..20176e35eb 100644 --- a/lib/asn1/test/testRfcs.erl +++ b/lib/asn1/test/testRfcs.erl @@ -35,22 +35,27 @@ compile(Config, Erules, Options0) -> asn1_test_lib:compile_all(Specs, Config, [Erules,{i,CaseDir}|Options]). test() -> - {1,3,6,1,5,5,7,48,1,2} = - IdPkixOcspNonce = - 'OCSP-2009':'id-pkix-ocsp-nonce'(), - roundtrip('OCSP-2009', 'OCSPRequest', - {'OCSPRequest', - {'TBSRequest', - 0, - {rfc822Name,"name string"}, - [{'Request', - {'CertID',{'_',{2,9,3,4,5},asn1_NOVALUE}, - <<"POTATOHASH">>,<<"HASHBROWN">>,42}, - [{'_',IdPkixOcspNonce,true,<<34,159,16,57,199>>}]}], - asn1_NOVALUE}, - asn1_NOVALUE}), - otp_7759(), - ok. + M = 'OCSP-2009', + case M:maps() of + false -> + {1,3,6,1,5,5,7,48,1,2} = + IdPkixOcspNonce = + 'OCSP-2009':'id-pkix-ocsp-nonce'(), + roundtrip('OCSP-2009', 'OCSPRequest', + {'OCSPRequest', + {'TBSRequest', + 0, + {rfc822Name,"name string"}, + [{'Request', + {'CertID',{'_',{2,9,3,4,5},asn1_NOVALUE}, + <<"POTATOHASH">>,<<"HASHBROWN">>,42}, + [{'_',IdPkixOcspNonce,true,<<34,159,16,57,199>>}]}], + asn1_NOVALUE}, + asn1_NOVALUE}), + otp_7759(records); + true -> + otp_7759(maps) + end. roundtrip(Module, Type, Value0) -> Enc = Module:encode(Type, Value0), @@ -58,7 +63,7 @@ roundtrip(Module, Type, Value0) -> asn1_test_lib:match_value(Value0, Value1), ok. -otp_7759() -> +otp_7759(Pack) -> %% The release note for asn-1.6.6 says: %% Decode of an open_type when the value was empty tagged %% type encoded with indefinite length failed. @@ -66,10 +71,15 @@ otp_7759() -> Encoded = encoded_msg(), ContentInfo = Mod:decode('ContentInfo', Encoded), io:format("~p\n", [ContentInfo]), - {'ContentInfo',_Id,PKCS7_content} = ContentInfo, - X = Mod:decode('SignedData', PKCS7_content), + Content = case ContentInfo of + {'ContentInfo',_Id,Content0} when Pack =:= records -> + Content0; + #{'content-type':=_,'pkcs7-content':=Content0} + when Pack =:= maps -> + Content0 + end, + X = Mod:decode('SignedData', Content), io:format("~p\n", [X]), - io:nl(), ok. encoded_msg() -> diff --git a/lib/asn1/test/testTCAP.erl b/lib/asn1/test/testTCAP.erl index 422ae1f0fc..a6f0f9fad7 100644 --- a/lib/asn1/test/testTCAP.erl +++ b/lib/asn1/test/testTCAP.erl @@ -92,5 +92,6 @@ test_asn1config() -> enc_dec(T, V0) -> M = 'TCAPPackage', {ok,Enc} = M:encode(T, V0), + asn1_test_lib:map_roundtrip(M, T, Enc), {ok,V} = M:decode(T, Enc), V. diff --git a/lib/asn1/test/testTimer.erl b/lib/asn1/test/testTimer.erl index bd8da85735..3edeb1b712 100644 --- a/lib/asn1/test/testTimer.erl +++ b/lib/asn1/test/testTimer.erl @@ -25,7 +25,42 @@ -define(times, 5000). -val() -> +go() -> + Module = 'H323-MESSAGES', + Type = 'H323-UserInformation', + Value = case Module:maps() of + false -> val_records(); + true -> val_maps() + end, + Bytes = Module:encode(Type, Value), + Value = Module:decode(Type, Bytes), + + {ValWr,done} = timer:tc(fun() -> encode(?times, Module, Type, Value) end), + io:format("ASN.1 encoding: ~p micro~n", [ValWr / ?times]), + + done = decode(2, Module, Type, Bytes), + + {ValRead,done} = timer:tc(fun() -> decode(?times, Module, Type, Bytes) end), + io:format("ASN.1 decoding: ~p micro~n", [ValRead /?times]), + + Comment = "encode: "++integer_to_list(round(ValWr/?times)) ++ + " micro, decode: "++integer_to_list(round(ValRead /?times)) ++ + " micro. [" ++ atom_to_list(Module:encoding_rule()) ++ "]", + {comment,Comment}. + +encode(0, _Module,_Type,_Value) -> + done; +encode(N, Module,Type,Value) -> + Module:encode(Type, Value), + encode(N-1, Module, Type, Value). + +decode(0, _Module, _Type, _Value) -> + done; +decode(N, Module, Type, Value) -> + Module:decode(Type, Value), + decode(N-1, Module, Type, Value). + +val_records() -> {'H323-UserInformation',{'H323-UU-PDU', {callProceeding, {'CallProceeding-UUIE', @@ -126,34 +161,66 @@ val() -> {'H323-UserInformation_user-data',24,<<"O">>}}. -go() -> - Module = 'H323-MESSAGES', - Type = 'H323-UserInformation', - Value = val(), - Bytes = Module:encode(Type, Value), - Value = Module:decode(Type, Bytes), - - {ValWr,done} = timer:tc(fun() -> encode(?times, Module, Type, Value) end), - io:format("ASN.1 encoding: ~p micro~n", [ValWr / ?times]), - - done = decode(2, Module, Type, Bytes), - - {ValRead,done} = timer:tc(fun() -> decode(?times, Module, Type, Bytes) end), - io:format("ASN.1 decoding: ~p micro~n", [ValRead /?times]), - - Comment = "encode: "++integer_to_list(round(ValWr/?times)) ++ - " micro, decode: "++integer_to_list(round(ValRead /?times)) ++ - " micro. [" ++ atom_to_list(Module:encoding_rule()) ++ "]", - {comment,Comment}. - -encode(0, _Module,_Type,_Value) -> - done; -encode(N, Module,Type,Value) -> - Module:encode(Type, Value), - encode(N-1, Module, Type, Value). - -decode(0, _Module, _Type, _Value) -> - done; -decode(N, Module, Type, Value) -> - Module:decode(Type, Value), - decode(N-1, Module, Type, Value). +val_maps() -> +#{'h323-uu-pdu' => #{h245Control => [], + h245Tunneling => true, + 'h323-message-body' => {callProceeding,#{callIdentifier => #{guid => <<"OCTET STRINGOCTE">>}, + cryptoTokens => [{cryptoGKPwdEncr,#{algorithmOID => {1,18,467,467}, + encryptedData => <<"OC">>, + paramS => #{iv8 => <<"OCTET ST">>, + ranInt => -7477016}}}, + {cryptoGKPwdEncr,#{algorithmOID => {1,19,486,486}, + encryptedData => <<>>, + paramS => #{iv8 => <<"OCTET ST">>, + ranInt => -2404513}}}], + destinationInfo => #{gatekeeper => #{nonStandardData => #{data => <<"O">>, + nonStandardIdentifier => {object,{0,10,260}}}}, + gateway => #{nonStandardData => #{data => <<"O">>, + nonStandardIdentifier => {object,{0,13,326}}}, + protocol => [{h320,#{dataRatesSupported => [#{channelMultiplier => 78, + channelRate => 1290470518, + nonStandardData => #{data => <<"O">>, + nonStandardIdentifier => {object,{0,11,295}}}}], + nonStandardData => #{data => <<"O">>, + nonStandardIdentifier => {object,{0,11,282}}}, + supportedPrefixes => [#{nonStandardData => #{data => <<"O">>, + nonStandardIdentifier => {object,{0,12,312}}}, + prefix => {'h323-ID',"BM"}}]}}]}, + mc => true, + mcu => #{nonStandardData => #{data => <<"OC">>, + nonStandardIdentifier => {object,{1,13,340,340}}}}, + nonStandardData => #{data => <<"O">>,nonStandardIdentifier => {object,{0,9,237}}}, + terminal => #{nonStandardData => #{data => <<"OC">>, + nonStandardIdentifier => {object,{1,14,353,354}}}}, + undefinedNode => true, + vendor => #{productId => <<"OC">>, + vendor => #{manufacturerCode => 16282, + t35CountryCode => 62, + t35Extension => 63}, + versionId => <<"OC">>}}, + fastStart => [], + h245Address => {ipxAddress,#{netnum => <<"OCTE">>, + node => <<"OCTET ">>, + port => <<"OC">>}}, + h245SecurityMode => {noSecurity,'NULL'}, + protocolIdentifier => {0,8,222}, + tokens => [#{certificate => #{certificate => <<"OC">>,type => {1,16,405,406}}, + challenge => <<"OCTET STR">>, + dhkey => #{generator => <<1:1>>,halfkey => <<1:1>>,modSize => <<1:1>>}, + generalID => "BMP", + nonStandard => #{data => <<"OC">>,nonStandardIdentifier => {1,16,414,415}}, + password => "BM", + random => -26430296, + timeStamp => 1667517741}, + #{certificate => #{certificate => <<"OC">>,type => {1,17,442,443}}, + challenge => <<"OCTET STRI">>, + dhkey => #{generator => <<1:1>>,halfkey => <<1:1>>,modSize => <<1:1>>}, + generalID => "BMP", + nonStandard => #{data => <<"OC">>,nonStandardIdentifier => {1,18,452,452}}, + password => "BMP", + random => -16356110, + timeStamp => 1817656756}]}}, + h4501SupplementaryService => [], + nonStandardControl => [], + nonStandardData => #{data => <<>>,nonStandardIdentifier => {object,{0,3,84}}}}, + 'user-data' => #{'protocol-discriminator' => 24,'user-information' => <<"O">>}}. diff --git a/lib/asn1/test/testUniqueObjectSets.erl b/lib/asn1/test/testUniqueObjectSets.erl index 4d3ec94391..30cbceb577 100644 --- a/lib/asn1/test/testUniqueObjectSets.erl +++ b/lib/asn1/test/testUniqueObjectSets.erl @@ -27,6 +27,7 @@ seq_roundtrip(I, D0) -> M = 'UniqueObjectSets', try {ok,Enc} = M:encode('Seq', {'Seq',I,D0}), + asn1_test_lib:map_roundtrip(M, 'Seq', Enc), {ok,{'Seq',I,D}} = M:decode('Seq', Enc), D catch C:E -> diff --git a/lib/asn1/test/test_compile_options.erl b/lib/asn1/test/test_compile_options.erl index ac74470537..c15e61550c 100644 --- a/lib/asn1/test/test_compile_options.erl +++ b/lib/asn1/test/test_compile_options.erl @@ -24,8 +24,8 @@ -include_lib("common_test/include/ct.hrl"). --export([wrong_path/1,comp/2,path/1,ticket_6143/1,noobj/1, - record_name_prefix/1,verbose/1]). +-export([wrong_path/1,comp/2,path/1,noobj/1, + record_name_prefix/1,verbose/1,maps/1]). %% OTP-5689 wrong_path(Config) -> @@ -64,8 +64,6 @@ path(Config) -> file:set_cwd(CWD), ok. -ticket_6143(Config) -> asn1_test_lib:compile("AA1", Config, []). - noobj(Config) -> DataDir = proplists:get_value(data_dir,Config), OutDir = proplists:get_value(priv_dir,Config), @@ -130,6 +128,28 @@ verbose(Config) when is_list(Config) -> [] = test_server:capture_get(), ok. +maps(Config) -> + DataDir = proplists:get_value(data_dir, Config), + OutDir = proplists:get_value(case_dir, Config), + InFile = filename:join(DataDir, "P-Record"), + + do_maps(ber, InFile, OutDir), + do_maps(per, InFile, OutDir), + do_maps(uper, InFile, OutDir). + +do_maps(Erule, InFile, OutDir) -> + Opts = [Erule,maps,{outdir,OutDir}], + ok = asn1ct:compile(InFile, Opts), + + %% Make sure that no .hrl files are generated. + [] = filelib:wildcard(filename:join(OutDir, "*.hrl")), + + %% Remove all generated files. + All = filelib:wildcard(filename:join(OutDir, "*")), + _ = [file:delete(N) || N <- All], + + ok. + outfiles_check(OutDir) -> outfiles_check(OutDir,outfiles1()). -- cgit v1.2.3 From a952ef15cc20249b3111565cbba7d6727f2a0012 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= Date: Tue, 7 Feb 2017 12:00:56 +0100 Subject: asn1_SUITE: Remove unused functions In 8a39672af4d9, the testX420/1 test case is no longer run. Remove the unused functions. --- lib/asn1/test/asn1_SUITE.erl | 12 ------------ 1 file changed, 12 deletions(-) (limited to 'lib/asn1/test') diff --git a/lib/asn1/test/asn1_SUITE.erl b/lib/asn1/test/asn1_SUITE.erl index b6430134ab..92e637617e 100644 --- a/lib/asn1/test/asn1_SUITE.erl +++ b/lib/asn1/test/asn1_SUITE.erl @@ -1027,18 +1027,6 @@ test_modified_x420(Config, Rule, Opts) -> test_modified_x420:test(Config). -testX420() -> - [{timetrap,{minutes,90}}]. -testX420(Config) -> - case erlang:system_info(system_architecture) of - "sparc-sun-solaris2.10" -> - {skip,"Too slow for an old Sparc"}; - _ -> - Rule = ber, - testX420:compile(Rule, [der], Config), - ok = testX420:ticket7759(Rule, Config) - end. - test_x691(Config) -> test(Config, fun test_x691/3, [per, uper]). test_x691(Config, Rule, Opts) -> -- cgit v1.2.3 From 142969f0860067c73af4b1e8db04d59255edf25a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= Date: Wed, 8 Feb 2017 07:26:29 +0100 Subject: Simplify running of asn1 app tests Instead of initiating running of the app tests for asn1 from asn1_SUITE, put the tests in asn1_app_SUITE and let it take care of itself. While we are it, eliminate 'export_all' in the new module and use lists:keyfind/3 instead of lists:keysearch/3. --- lib/asn1/test/Makefile | 3 +- lib/asn1/test/asn1_SUITE.erl | 8 +- lib/asn1/test/asn1_app_SUITE.erl | 229 ++++++++++++++++++++++++++++++++++++++ lib/asn1/test/asn1_app_test.erl | 229 -------------------------------------- lib/asn1/test/asn1_appup_test.erl | 58 ---------- 5 files changed, 231 insertions(+), 296 deletions(-) create mode 100644 lib/asn1/test/asn1_app_SUITE.erl delete mode 100644 lib/asn1/test/asn1_app_test.erl delete mode 100644 lib/asn1/test/asn1_appup_test.erl (limited to 'lib/asn1/test') diff --git a/lib/asn1/test/Makefile b/lib/asn1/test/Makefile index 40575e8a2f..278c80852b 100644 --- a/lib/asn1/test/Makefile +++ b/lib/asn1/test/Makefile @@ -114,8 +114,7 @@ MODULES= \ testImporting \ testExtensibilityImplied \ asn1_test_lib \ - asn1_app_test \ - asn1_appup_test \ + asn1_app_SUITE \ asn1_SUITE \ error_SUITE \ syntax_SUITE diff --git a/lib/asn1/test/asn1_SUITE.erl b/lib/asn1/test/asn1_SUITE.erl index 92e637617e..00e9871aca 100644 --- a/lib/asn1/test/asn1_SUITE.erl +++ b/lib/asn1/test/asn1_SUITE.erl @@ -41,8 +41,6 @@ suite() -> all() -> [{group, compile}, {group, parallel}, - {group, app_test}, - {group, appup_test}, % TODO: Investigate parallel running of these: testComment, @@ -64,10 +62,6 @@ groups() -> ber_optional, tagdefault_automatic]}, - {app_test, [], [{asn1_app_test, all}]}, - - {appup_test, [], [{asn1_appup_test, all}]}, - {parallel, Parallel, [cover, xref, @@ -1280,7 +1274,7 @@ xref(_Config) -> xref:set_default(s, [{verbose,false},{warnings,false},{builtins,true}]), Test = filename:dirname(code:which(?MODULE)), {ok,_PMs} = xref:add_directory(s, Test), - UnusedExports = "X - XU - asn1_appup_test - asn1_app_test - \".*_SUITE\" : Mod", + UnusedExports = "X - XU - \".*_SUITE\" : Mod", case xref:q(s, UnusedExports) of {ok,[]} -> ok; diff --git a/lib/asn1/test/asn1_app_SUITE.erl b/lib/asn1/test/asn1_app_SUITE.erl new file mode 100644 index 0000000000..c089a7267c --- /dev/null +++ b/lib/asn1/test/asn1_app_SUITE.erl @@ -0,0 +1,229 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2005-2016. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +%% +%% +%%---------------------------------------------------------------------- +%% Purpose: Verify the application specifics of the asn1 application +%%---------------------------------------------------------------------- +-module(asn1_app_SUITE). +-export([all/0,groups/0,init_per_group/2,end_per_group/2, + init_per_suite/1,end_per_suite/1, + appup/1,fields/1,modules/1,export_all/1,app_depend/1]). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +all() -> + [appup, fields, modules, export_all, app_depend]. + +groups() -> + []. + +init_per_group(_GroupName, Config) -> + Config. + +end_per_group(_GroupName, Config) -> + Config. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +init_per_suite(Config) when is_list(Config) -> + case is_app(asn1) of + {ok, AppFile} -> + io:format("AppFile: ~n~p~n", [AppFile]), + [{app_file, AppFile}|Config]; + {error, Reason} -> + fail(Reason) + end. + +is_app(App) -> + LibDir = code:lib_dir(App), + File = filename:join([LibDir, "ebin", atom_to_list(App) ++ ".app"]), + case file:consult(File) of + {ok, [{application, App, AppFile}]} -> + {ok, AppFile}; + Error -> + {error, {invalid_format, Error}} + end. + + +end_per_suite(Config) when is_list(Config) -> + Config. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +appup(Config) when is_list(Config) -> + ok = test_server:appup_test(asn1). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +fields(Config) when is_list(Config) -> + AppFile = key1find(app_file, Config), + Fields = [vsn, description, modules, registered, applications], + case check_fields(Fields, AppFile, []) of + [] -> + ok; + Missing -> + fail({missing_fields, Missing}) + end. + +check_fields([], _AppFile, Missing) -> + Missing; +check_fields([Field|Fields], AppFile, Missing) -> + check_fields(Fields, AppFile, check_field(Field, AppFile, Missing)). + +check_field(Name, AppFile, Missing) -> + io:format("checking field: ~p~n", [Name]), + case lists:keymember(Name, 1, AppFile) of + true -> + Missing; + false -> + [Name|Missing] + end. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +modules(Config) when is_list(Config) -> + AppFile = key1find(app_file, Config), + Mods = key1find(modules, AppFile), + EbinList = get_ebin_mods(asn1), + case missing_modules(Mods, EbinList, []) of + [] -> + ok; + Missing -> + throw({error, {missing_modules, Missing}}) + end, + case extra_modules(Mods, EbinList, []) of + [] -> + ok; + Extra -> + check_asn1ct_modules(Extra) + end, + {ok, Mods}. + +get_ebin_mods(App) -> + LibDir = code:lib_dir(App), + EbinDir = filename:join([LibDir,"ebin"]), + {ok, Files0} = file:list_dir(EbinDir), + Files1 = [lists:reverse(File) || File <- Files0], + [list_to_atom(lists:reverse(Name)) || [$m,$a,$e,$b,$.|Name] <- Files1]. + +check_asn1ct_modules(Extra) -> + ASN1CTMods = [asn1ct,asn1ct_check,asn1_db,asn1ct_pretty_format, + asn1ct_gen,asn1ct_gen_check,asn1ct_gen_per, + asn1ct_name,asn1ct_constructed_per,asn1ct_constructed_ber, + asn1ct_gen_ber,asn1ct_constructed_ber_bin_v2, + asn1ct_gen_ber_bin_v2,asn1ct_value, + asn1ct_tok,asn1ct_parser2,asn1ct_table, + asn1ct_imm,asn1ct_func,asn1ct_rtt, + asn1ct_eval_ext], + case Extra -- ASN1CTMods of + [] -> + ok; + Extra2 -> + throw({error, {extra_modules, Extra2}}) + end. + +missing_modules([], _Ebins, Missing) -> + Missing; +missing_modules([Mod|Mods], Ebins, Missing) -> + case lists:member(Mod, Ebins) of + true -> + missing_modules(Mods, Ebins, Missing); + false -> + io:format("missing module: ~p~n", [Mod]), + missing_modules(Mods, Ebins, [Mod|Missing]) + end. + + +extra_modules(_Mods, [], Extra) -> + Extra; +extra_modules(Mods, [Mod|Ebins], Extra) -> + case lists:member(Mod, Mods) of + true -> + extra_modules(Mods, Ebins, Extra); + false -> + io:format("supefluous module: ~p~n", [Mod]), + extra_modules(Mods, Ebins, [Mod|Extra]) + end. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +export_all(Config) when is_list(Config) -> + AppFile = key1find(app_file, Config), + Mods = key1find(modules, AppFile), + check_export_all(Mods). + + +check_export_all([]) -> + ok; +check_export_all([Mod|Mods]) -> + case (catch apply(Mod, module_info, [compile])) of + {'EXIT', {undef, _}} -> + check_export_all(Mods); + O -> + case lists:keyfind(options, 1, O) of + false -> + check_export_all(Mods); + {options, List} -> + case lists:member(export_all, List) of + true -> + throw({error, {export_all, Mod}}); + false -> + check_export_all(Mods) + end + end + end. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +app_depend(Config) when is_list(Config) -> + AppFile = key1find(app_file, Config), + Apps = key1find(applications, AppFile), + check_apps(Apps). + + +check_apps([]) -> + ok; +check_apps([App|Apps]) -> + case is_app(App) of + {ok, _} -> + check_apps(Apps); + Error -> + throw({error, {missing_app, {App, Error}}}) + end. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +fail(Reason) -> + exit({suite_failed, Reason}). + +key1find(Key, L) -> + case lists:keyfind(Key, 1, L) of + false -> + fail({not_found, Key, L}); + {Key, Value} -> + Value + end. diff --git a/lib/asn1/test/asn1_app_test.erl b/lib/asn1/test/asn1_app_test.erl deleted file mode 100644 index 028322f555..0000000000 --- a/lib/asn1/test/asn1_app_test.erl +++ /dev/null @@ -1,229 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2005-2016. All Rights Reserved. -%% -%% Licensed under the Apache License, Version 2.0 (the "License"); -%% you may not use this file except in compliance with the License. -%% You may obtain a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, software -%% distributed under the License is distributed on an "AS IS" BASIS, -%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%% See the License for the specific language governing permissions and -%% limitations under the License. -%% -%% %CopyrightEnd% -%% -%% -%%---------------------------------------------------------------------- -%% Purpose: Verify the application specifics of the asn1 application -%%---------------------------------------------------------------------- --module(asn1_app_test). - --compile(export_all). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -all() -> - [fields, modules, exportall, app_depend]. - -groups() -> - []. - -init_per_group(_GroupName, Config) -> - Config. - -end_per_group(_GroupName, Config) -> - Config. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -init_per_suite(Config) when is_list(Config) -> - case is_app(asn1) of - {ok, AppFile} -> - io:format("AppFile: ~n~p~n", [AppFile]), - [{app_file, AppFile}|Config]; - {error, Reason} -> - fail(Reason) - end. - -is_app(App) -> - LibDir = code:lib_dir(App), - File = filename:join([LibDir, "ebin", atom_to_list(App) ++ ".app"]), - case file:consult(File) of - {ok, [{application, App, AppFile}]} -> - {ok, AppFile}; - Error -> - {error, {invalid_format, Error}} - end. - - -end_per_suite(Config) when is_list(Config) -> - Config. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%% . -fields(Config) when is_list(Config) -> - AppFile = key1search(app_file, Config), - Fields = [vsn, description, modules, registered, applications], - case check_fields(Fields, AppFile, []) of - [] -> - ok; - Missing -> - fail({missing_fields, Missing}) - end. - -check_fields([], _AppFile, Missing) -> - Missing; -check_fields([Field|Fields], AppFile, Missing) -> - check_fields(Fields, AppFile, check_field(Field, AppFile, Missing)). - -check_field(Name, AppFile, Missing) -> - io:format("checking field: ~p~n", [Name]), - case lists:keymember(Name, 1, AppFile) of - true -> - Missing; - false -> - [Name|Missing] - end. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%% . -modules(Config) when is_list(Config) -> - AppFile = key1search(app_file, Config), - Mods = key1search(modules, AppFile), - EbinList = get_ebin_mods(asn1), - case missing_modules(Mods, EbinList, []) of - [] -> - ok; - Missing -> - throw({error, {missing_modules, Missing}}) - end, - case extra_modules(Mods, EbinList, []) of - [] -> - ok; - Extra -> - check_asn1ct_modules(Extra) -% throw({error, {extra_modules, Extra}}) - end, - {ok, Mods}. - -get_ebin_mods(App) -> - LibDir = code:lib_dir(App), - EbinDir = filename:join([LibDir,"ebin"]), - {ok, Files0} = file:list_dir(EbinDir), - Files1 = [lists:reverse(File) || File <- Files0], - [list_to_atom(lists:reverse(Name)) || [$m,$a,$e,$b,$.|Name] <- Files1]. - -check_asn1ct_modules(Extra) -> - ASN1CTMods = [asn1ct,asn1ct_check,asn1_db,asn1ct_pretty_format, - asn1ct_gen,asn1ct_gen_check,asn1ct_gen_per, - asn1ct_name,asn1ct_constructed_per,asn1ct_constructed_ber, - asn1ct_gen_ber,asn1ct_constructed_ber_bin_v2, - asn1ct_gen_ber_bin_v2,asn1ct_value, - asn1ct_tok,asn1ct_parser2,asn1ct_table, - asn1ct_imm,asn1ct_func,asn1ct_rtt, - asn1ct_eval_ext], - case Extra -- ASN1CTMods of - [] -> - ok; - Extra2 -> - throw({error, {extra_modules, Extra2}}) - end. - -missing_modules([], _Ebins, Missing) -> - Missing; -missing_modules([Mod|Mods], Ebins, Missing) -> - case lists:member(Mod, Ebins) of - true -> - missing_modules(Mods, Ebins, Missing); - false -> - io:format("missing module: ~p~n", [Mod]), - missing_modules(Mods, Ebins, [Mod|Missing]) - end. - - -extra_modules(_Mods, [], Extra) -> - Extra; -extra_modules(Mods, [Mod|Ebins], Extra) -> - case lists:member(Mod, Mods) of - true -> - extra_modules(Mods, Ebins, Extra); - false -> - io:format("supefluous module: ~p~n", [Mod]), - extra_modules(Mods, Ebins, [Mod|Extra]) - end. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - -%% . -exportall(Config) when is_list(Config) -> - AppFile = key1search(app_file, Config), - Mods = key1search(modules, AppFile), - check_export_all(Mods). - - -check_export_all([]) -> - ok; -check_export_all([Mod|Mods]) -> - case (catch apply(Mod, module_info, [compile])) of - {'EXIT', {undef, _}} -> - check_export_all(Mods); - O -> - case lists:keysearch(options, 1, O) of - false -> - check_export_all(Mods); - {value, {options, List}} -> - case lists:member(export_all, List) of - true -> - throw({error, {export_all, Mod}}); - false -> - check_export_all(Mods) - end - end - end. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%% . -app_depend(Config) when is_list(Config) -> - AppFile = key1search(app_file, Config), - Apps = key1search(applications, AppFile), - check_apps(Apps). - - -check_apps([]) -> - ok; -check_apps([App|Apps]) -> - case is_app(App) of - {ok, _} -> - check_apps(Apps); - Error -> - throw({error, {missing_app, {App, Error}}}) - end. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - -fail(Reason) -> - exit({suite_failed, Reason}). - -key1search(Key, L) -> - case lists:keysearch(Key, 1, L) of - undefined -> - fail({not_found, Key, L}); - {value, {Key, Value}} -> - Value - end. diff --git a/lib/asn1/test/asn1_appup_test.erl b/lib/asn1/test/asn1_appup_test.erl deleted file mode 100644 index 54540e53cc..0000000000 --- a/lib/asn1/test/asn1_appup_test.erl +++ /dev/null @@ -1,58 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2005-2016. All Rights Reserved. -%% -%% Licensed under the Apache License, Version 2.0 (the "License"); -%% you may not use this file except in compliance with the License. -%% You may obtain a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, software -%% distributed under the License is distributed on an "AS IS" BASIS, -%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%% See the License for the specific language governing permissions and -%% limitations under the License. -%% -%% %CopyrightEnd% -%% -%% -%%---------------------------------------------------------------------- -%% Purpose: Verify the application specifics of the asn1 application -%%---------------------------------------------------------------------- --module(asn1_appup_test). --compile(export_all). --include_lib("common_test/include/ct.hrl"). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -all() -> - [appup]. - -groups() -> - []. - -init_per_group(_GroupName, Config) -> - Config. - -end_per_group(_GroupName, Config) -> - Config. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -init_per_suite(Config) when is_list(Config) -> - Config. - - -end_per_suite(Config) when is_list(Config) -> - Config. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -appup() -> - [{doc, "perform a simple check of the asn1 appup file"}]. -appup(Config) when is_list(Config) -> - ok = ?t:appup_test(asn1). -- cgit v1.2.3 From 1af5b82466124e4aa32e8b232b915935071a2a0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= Date: Tue, 7 Feb 2017 11:58:04 +0100 Subject: asn1_SUITE: Make sure that there are no unused functions Add xref_export_all/1 to make sure that all functions in the asn1_SUITE module are actually called (directly or indirectly). --- lib/asn1/test/asn1_SUITE.erl | 72 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 65 insertions(+), 7 deletions(-) (limited to 'lib/asn1/test') diff --git a/lib/asn1/test/asn1_SUITE.erl b/lib/asn1/test/asn1_SUITE.erl index 00e9871aca..88b50e07d9 100644 --- a/lib/asn1/test/asn1_SUITE.erl +++ b/lib/asn1/test/asn1_SUITE.erl @@ -39,7 +39,10 @@ suite() -> {timetrap,{minutes,60}}]. all() -> - [{group, compile}, + [xref, + xref_export_all, + + {group, compile}, {group, parallel}, % TODO: Investigate parallel running of these: @@ -64,7 +67,6 @@ groups() -> {parallel, Parallel, [cover, - xref, {group, ber}, % Uses 'P-Record', 'Constraints', 'MEDIA-GATEWAY-CONTROL'... {group, [], [parse, @@ -1269,16 +1271,72 @@ ticket7904(Config) -> {ok,_} = 'RANAPextract1':encode('InitiatingMessage', Val1), {ok,_} = 'RANAPextract1':encode('InitiatingMessage', Val1). + +%% Make sure that functions exported from other modules are +%% actually used. + xref(_Config) -> - xref:start(s), - xref:set_default(s, [{verbose,false},{warnings,false},{builtins,true}]), + S = ?FUNCTION_NAME, + xref:start(S), + xref:set_default(S, [{verbose,false},{warnings,false},{builtins,true}]), Test = filename:dirname(code:which(?MODULE)), - {ok,_PMs} = xref:add_directory(s, Test), - UnusedExports = "X - XU - \".*_SUITE\" : Mod", - case xref:q(s, UnusedExports) of + {ok,_PMs} = xref:add_directory(S, Test), + Q = "X - XU - \".*_SUITE\" : Mod", + UnusedExports = xref:q(S, Q), + xref:stop(S), + case UnusedExports of {ok,[]} -> ok; {ok,[_|_]=Res} -> io:format("Exported, but unused: ~p\n", [Res]), ?t:fail() end. + +%% Ensure that all functions that are implicitly exported by +%% 'export_all' in this module are actually used. + +xref_export_all(_Config) -> + S = ?FUNCTION_NAME, + xref:start(S), + xref:set_default(S, [{verbose,false},{warnings,false},{builtins,true}]), + {ok,_PMs} = xref:add_module(S, code:which(?MODULE)), + AllCalled = all_called(), + Def = "Called := " ++ lists:flatten(io_lib:format("~p", [AllCalled])), + {ok,_} = xref:q(S, Def), + {ok,Unused} = xref:q(S, "X - Called - range (closure E | Called)"), + xref:stop(S), + case Unused of + [] -> + ok; + [_|_] -> + S = [io_lib:format("~p:~p/~p\n", [M,F,A]) || {M,F,A} <- Unused], + io:format("There are unused functions:\n\n~s\n", [S]), + ?t:fail(unused_functions) + end. + +%% Collect all functions that common_test will call in this module. + +all_called() -> + [{?MODULE,end_per_group,2}, + {?MODULE,end_per_suite,1}, + {?MODULE,end_per_testcase,2}, + {?MODULE,init_per_group,2}, + {?MODULE,init_per_suite,1}, + {?MODULE,init_per_testcase,2}, + {?MODULE,suite,0}] ++ + all_called_1(all() ++ groups()). + +all_called_1([{_,_}|T]) -> + all_called_1(T); +all_called_1([{_Name,_Flags,Fs}|T]) -> + all_called_1(Fs ++ T); +all_called_1([F|T]) when is_atom(F) -> + L = case erlang:function_exported(?MODULE, F, 0) of + false -> + [{?MODULE,F,1}]; + true -> + [{?MODULE,F,0},{?MODULE,F,1}] + end, + L ++ all_called_1(T); +all_called_1([]) -> + []. -- cgit v1.2.3