[ONOS-4650][ONOS-4726][ONOS-4727] [ONOS-4728]Implement must parser + when parser + feature + if-feature + revision defect fix
Change-Id: I0a3aee6c1c6b72ef7da7f7f565fd0f149fe3fd42
diff --git a/plugin/src/test/resources/ContainerSubStatementMust.yang b/plugin/src/test/resources/ContainerSubStatementMust.yang
new file mode 100644
index 0000000..c089850
--- /dev/null
+++ b/plugin/src/test/resources/ContainerSubStatementMust.yang
@@ -0,0 +1,24 @@
+module Test {
+ yang-version 1;
+ namespace http://huawei.com;
+ prefix Ant;
+ container interface {
+ leaf ifType {
+ type enumeration {
+ enum ethernet;
+ enum atm;
+ }
+ }
+ leaf ifMTU {
+ type uint32;
+ }
+ must "ifType != 'ethernet' or " +
+ "(ifType = 'ethernet' and ifMTU = 1500)" {
+ description "An ethernet MTU must be 1500";
+ }
+ must "ifType != 'atm' or " +
+ "(ifType = 'atm' and ifMTU <= 17966 and ifMTU >= 64)" {
+ description "An atm MTU must be 64 .. 17966";
+ }
+ }
+}
diff --git a/plugin/src/test/resources/ContainerSubStatementWhen.yang b/plugin/src/test/resources/ContainerSubStatementWhen.yang
new file mode 100644
index 0000000..644b2ff
--- /dev/null
+++ b/plugin/src/test/resources/ContainerSubStatementWhen.yang
@@ -0,0 +1,32 @@
+module Test {
+ yang-version 1;
+ namespace http://huawei.com;
+ prefix Ant;
+ list interface-switching-capability {
+ key "switching-capability";
+ description
+ "List of Interface Switching Capabilities Descriptors (ISCD)
+ for this link.";
+ reference
+ "RFC3471: Generalized Multi-Protocol Label Switching (GMPLS)
+ Signaling Functional Description.
+ RFC4203: OSPF Extensions in Support of Generalized
+ Multi-Protocol Label Switching (GMPLS).";
+ leaf switching-capability {
+ type string;
+ description
+ "Switching Capability for this interface.";
+ }
+ }
+ container time-division-multiplex-capable {
+ when "../switching-capability = 'TDM'" {
+ description "Valid only for TDM";
+ }
+ description
+ "Interface has time-division multiplex capabilities.";
+
+ leaf minimum-lsp-bandwidth {
+ type decimal64;
+ }
+ }
+}
diff --git a/plugin/src/test/resources/LeafSubStatementMust.yang b/plugin/src/test/resources/LeafSubStatementMust.yang
new file mode 100644
index 0000000..6d7e626
--- /dev/null
+++ b/plugin/src/test/resources/LeafSubStatementMust.yang
@@ -0,0 +1,14 @@
+module Test {
+ yang-version 1;
+ namespace http://huawei.com;
+ prefix Ant;
+ leaf ifType {
+ type enumeration {
+ enum ethernet;
+ enum atm;
+ }
+ must "ifType != 'ethernet'" {
+ description "ifType is not ethernet";
+ }
+ }
+}
diff --git a/plugin/src/test/resources/LeafSubStatementWhen.yang b/plugin/src/test/resources/LeafSubStatementWhen.yang
new file mode 100644
index 0000000..239e0b6
--- /dev/null
+++ b/plugin/src/test/resources/LeafSubStatementWhen.yang
@@ -0,0 +1,14 @@
+module Test {
+ yang-version 1;
+ namespace http://huawei.com;
+ prefix Ant;
+ leaf ifType {
+ when "ifType != 'ethernet'" {
+ description "ifType is not ethernet";
+ }
+ type enumeration {
+ enum ethernet;
+ enum atm;
+ }
+ }
+}
diff --git a/plugin/src/test/resources/MultipleRevision.yang b/plugin/src/test/resources/MultipleRevision.yang
new file mode 100755
index 0000000..4ce440c
--- /dev/null
+++ b/plugin/src/test/resources/MultipleRevision.yang
@@ -0,0 +1,26 @@
+module Test {
+ yang-version 1;
+ namespace urn:ietf:params:xml:ns:yang:ietf-ospf;
+ prefix test;
+
+ revision 2013-07-15 {
+ description
+ "This revision adds the following new data types:
+ - yang-identifier
+ - hex-string
+ - uuid
+ - dotted-quad";
+ reference
+ "RFC 6991: Common YANG Data Types";
+ }
+ revision 2013-07-14 {
+ description
+ "This revision adds the following new data types:
+ - yang-identifier
+ - hex-string
+ - uuid
+ - dotted-quad";
+ reference
+ "RFC 6991: Common YANG Data Types";
+ }
+}
diff --git a/plugin/src/test/resources/SelfFileLinkingWithFeature.yang b/plugin/src/test/resources/SelfFileLinkingWithFeature.yang
new file mode 100644
index 0000000..53de63a
--- /dev/null
+++ b/plugin/src/test/resources/SelfFileLinkingWithFeature.yang
@@ -0,0 +1,23 @@
+module syslog {
+ yang-version 1;
+ namespace http://huawei.com;
+ prefix "sys";
+ feature local-storage {
+ description
+ "This feature means the device supports local
+ storage (memory, flash or disk) that can be used to
+ store syslog messages.";
+ }
+
+ container speed {
+ leaf local-storage-limit {
+ if-feature local-storage;
+ type uint64;
+ units "kilobyte";
+ config false;
+ description
+ "The amount of local storage that can be
+ used to hold syslog messages.";
+ }
+ }
+}
diff --git a/plugin/src/test/resources/SelfFileLinkingWithFeatureInSubModule.yang b/plugin/src/test/resources/SelfFileLinkingWithFeatureInSubModule.yang
new file mode 100644
index 0000000..09b8b37
--- /dev/null
+++ b/plugin/src/test/resources/SelfFileLinkingWithFeatureInSubModule.yang
@@ -0,0 +1,24 @@
+submodule syslog {
+ yang-version 1;
+ belongs-to "syslog1" {
+ prefix "sys";
+ }
+ feature local-storage {
+ description
+ "This feature means the device supports local
+ storage (memory, flash or disk) that can be used to
+ store syslog messages.";
+ }
+
+ container speed {
+ leaf local-storage-limit {
+ if-feature local-storage;
+ type uint64;
+ units "kilobyte";
+ config false;
+ description
+ "The amount of local storage that can be
+ used to hold syslog messages.";
+ }
+ }
+}
diff --git a/plugin/src/test/resources/SelfFileLinkingWithFeatureUndefined.yang b/plugin/src/test/resources/SelfFileLinkingWithFeatureUndefined.yang
new file mode 100644
index 0000000..f55c61a
--- /dev/null
+++ b/plugin/src/test/resources/SelfFileLinkingWithFeatureUndefined.yang
@@ -0,0 +1,17 @@
+module syslog {
+ yang-version 1;
+ namespace http://huawei.com;
+ prefix "sys";
+
+ container speed {
+ leaf local-storage-limit {
+ if-feature local-storage;
+ type uint64;
+ units "kilobyte";
+ config false;
+ description
+ "The amount of local storage that can be
+ used to hold syslog messages.";
+ }
+ }
+}
diff --git a/plugin/src/test/resources/SelfFileLinkingWithMultipleDependency.yang b/plugin/src/test/resources/SelfFileLinkingWithMultipleDependency.yang
new file mode 100644
index 0000000..d230f99
--- /dev/null
+++ b/plugin/src/test/resources/SelfFileLinkingWithMultipleDependency.yang
@@ -0,0 +1,26 @@
+module syslog {
+ yang-version 1;
+ namespace http://huawei.com;
+ prefix "sys";
+
+ feature p2mp-te {
+ description "Indicates support for P2MP-TE";
+ }
+
+ feature frr-te {
+ description "Indicates support for TE FastReroute (FRR)";
+ if-feature p2mp-te;
+ }
+
+ container speed {
+ leaf local-storage-limit {
+ if-feature frr-te;
+ type uint64;
+ units "kilobyte";
+ config false;
+ description
+ "The amount of local storage that can be
+ used to hold syslog messages.";
+ }
+ }
+}
diff --git a/plugin/src/test/resources/SelfFileLinkingWithMultipleDependencyUnresolved.yang b/plugin/src/test/resources/SelfFileLinkingWithMultipleDependencyUnresolved.yang
new file mode 100644
index 0000000..02bca89
--- /dev/null
+++ b/plugin/src/test/resources/SelfFileLinkingWithMultipleDependencyUnresolved.yang
@@ -0,0 +1,22 @@
+module syslog {
+ yang-version 1;
+ namespace http://huawei.com;
+ prefix "sys";
+
+ feature frr-te {
+ description "Indicates support for TE FastReroute (FRR)";
+ if-feature p2mp-te;
+ }
+
+ container speed {
+ leaf local-storage-limit {
+ if-feature frr-te;
+ type uint64;
+ units "kilobyte";
+ config false;
+ description
+ "The amount of local storage that can be
+ used to hold syslog messages.";
+ }
+ }
+}
diff --git a/plugin/src/test/resources/SelfFileLinkingWithMultipleFeature.yang b/plugin/src/test/resources/SelfFileLinkingWithMultipleFeature.yang
new file mode 100644
index 0000000..407023c
--- /dev/null
+++ b/plugin/src/test/resources/SelfFileLinkingWithMultipleFeature.yang
@@ -0,0 +1,26 @@
+module syslog {
+ yang-version 1;
+ namespace http://huawei.com;
+ prefix "sys";
+
+ feature p2mp-te {
+ description "Indicates support for P2MP-TE";
+ }
+
+ feature frr-te {
+ description "Indicates support for TE FastReroute (FRR)";
+ if-feature p2mp-te;
+ }
+
+ container speed {
+ leaf local-storage-limit {
+ if-feature local-storage;
+ type uint64;
+ units "kilobyte";
+ config false;
+ description
+ "The amount of local storage that can be
+ used to hold syslog messages.";
+ }
+ }
+}
diff --git a/plugin/src/test/resources/interfilefeatureimport/featureFile1.yang b/plugin/src/test/resources/interfilefeatureimport/featureFile1.yang
new file mode 100644
index 0000000..e78e583
--- /dev/null
+++ b/plugin/src/test/resources/interfilefeatureimport/featureFile1.yang
@@ -0,0 +1,26 @@
+module syslog1 {
+ yang-version 1;
+ namespace "http://huawei1.com";
+ prefix "sys1";
+
+ import "syslog2" {
+ prefix "sys2";
+ }
+
+ feature frr-te {
+ description "Indicates support for TE FastReroute (FRR)";
+ if-feature "sys2:p2mp-te";
+ }
+
+ container speed {
+ leaf local-storage-limit {
+ if-feature frr-te;
+ type uint64;
+ units "kilobyte";
+ config false;
+ description
+ "The amount of local storage that can be
+ used to hold syslog messages.";
+ }
+ }
+}
diff --git a/plugin/src/test/resources/interfilefeatureimport/featureFile2.yang b/plugin/src/test/resources/interfilefeatureimport/featureFile2.yang
new file mode 100644
index 0000000..782571c
--- /dev/null
+++ b/plugin/src/test/resources/interfilefeatureimport/featureFile2.yang
@@ -0,0 +1,9 @@
+module syslog2 {
+ yang-version 1;
+ namespace "http://huawei2.com";
+ prefix "sys2";
+
+ feature p2mp-te {
+ description "Indicates support for P2MP-TE";
+ }
+}
diff --git a/plugin/src/test/resources/interfilefeatureimportdependency/featurefile1.yang b/plugin/src/test/resources/interfilefeatureimportdependency/featurefile1.yang
new file mode 100644
index 0000000..e78e583
--- /dev/null
+++ b/plugin/src/test/resources/interfilefeatureimportdependency/featurefile1.yang
@@ -0,0 +1,26 @@
+module syslog1 {
+ yang-version 1;
+ namespace "http://huawei1.com";
+ prefix "sys1";
+
+ import "syslog2" {
+ prefix "sys2";
+ }
+
+ feature frr-te {
+ description "Indicates support for TE FastReroute (FRR)";
+ if-feature "sys2:p2mp-te";
+ }
+
+ container speed {
+ leaf local-storage-limit {
+ if-feature frr-te;
+ type uint64;
+ units "kilobyte";
+ config false;
+ description
+ "The amount of local storage that can be
+ used to hold syslog messages.";
+ }
+ }
+}
diff --git a/plugin/src/test/resources/interfilefeatureimportdependency/featurefile2.yang b/plugin/src/test/resources/interfilefeatureimportdependency/featurefile2.yang
new file mode 100644
index 0000000..fcaf8e0
--- /dev/null
+++ b/plugin/src/test/resources/interfilefeatureimportdependency/featurefile2.yang
@@ -0,0 +1,14 @@
+module syslog2 {
+ yang-version 1;
+ namespace "http://huawei2.com";
+ prefix "sys2";
+
+ import "syslog3" {
+ prefix "sys3";
+ }
+
+ feature p2mp-te {
+ description "Indicates support for P2MP-TE";
+ if-feature "sys3:extended-admin-groups";
+ }
+}
diff --git a/plugin/src/test/resources/interfilefeatureimportdependency/featurefile3.yang b/plugin/src/test/resources/interfilefeatureimportdependency/featurefile3.yang
new file mode 100644
index 0000000..13d6787
--- /dev/null
+++ b/plugin/src/test/resources/interfilefeatureimportdependency/featurefile3.yang
@@ -0,0 +1,11 @@
+module syslog3 {
+ yang-version 1;
+ namespace "http://huawei3.com";
+ prefix "sys3";
+
+ feature extended-admin-groups {
+ description
+ "Indicates support for TE link extended admin
+ groups.";
+ }
+}
diff --git a/plugin/src/test/resources/interfilefeatureimportdependencyUndefined/featurefile1.yang b/plugin/src/test/resources/interfilefeatureimportdependencyUndefined/featurefile1.yang
new file mode 100644
index 0000000..e78e583
--- /dev/null
+++ b/plugin/src/test/resources/interfilefeatureimportdependencyUndefined/featurefile1.yang
@@ -0,0 +1,26 @@
+module syslog1 {
+ yang-version 1;
+ namespace "http://huawei1.com";
+ prefix "sys1";
+
+ import "syslog2" {
+ prefix "sys2";
+ }
+
+ feature frr-te {
+ description "Indicates support for TE FastReroute (FRR)";
+ if-feature "sys2:p2mp-te";
+ }
+
+ container speed {
+ leaf local-storage-limit {
+ if-feature frr-te;
+ type uint64;
+ units "kilobyte";
+ config false;
+ description
+ "The amount of local storage that can be
+ used to hold syslog messages.";
+ }
+ }
+}
diff --git a/plugin/src/test/resources/interfilefeatureimportdependencyUndefined/featurefile2.yang b/plugin/src/test/resources/interfilefeatureimportdependencyUndefined/featurefile2.yang
new file mode 100644
index 0000000..199a6a6
--- /dev/null
+++ b/plugin/src/test/resources/interfilefeatureimportdependencyUndefined/featurefile2.yang
@@ -0,0 +1,15 @@
+module syslog2 {
+ yang-version 1;
+ namespace "http://huawei2.com";
+ prefix "sys2";
+
+ import "syslog3" {
+ prefix "sys3";
+ }
+
+ feature p2mp-te {
+ description "Indicates support for P2MP-TE";
+ if-feature "sys3:extended-admin-groups";
+ }
+}
+
diff --git a/plugin/src/test/resources/interfilefeatureimportdependencyUndefined/featurefile3.yang b/plugin/src/test/resources/interfilefeatureimportdependencyUndefined/featurefile3.yang
new file mode 100644
index 0000000..f638139
--- /dev/null
+++ b/plugin/src/test/resources/interfilefeatureimportdependencyUndefined/featurefile3.yang
@@ -0,0 +1,5 @@
+module syslog3 {
+ yang-version 1;
+ namespace "http://huawei3.com";
+ prefix "sys3";
+}
diff --git a/plugin/src/test/resources/interfilefeatureinclude/featureFile3.yang b/plugin/src/test/resources/interfilefeatureinclude/featureFile3.yang
new file mode 100644
index 0000000..b387853
--- /dev/null
+++ b/plugin/src/test/resources/interfilefeatureinclude/featureFile3.yang
@@ -0,0 +1,24 @@
+module syslog3 {
+ yang-version 1;
+ namespace "http://huawei3.com";
+ prefix "sys3";
+
+ include "syslog4";
+
+ feature frr-te {
+ description "Indicates support for TE FastReroute (FRR)";
+ if-feature "p2mp-te";
+ }
+
+ container speed {
+ leaf local-storage-limit {
+ if-feature frr-te;
+ type uint64;
+ units "kilobyte";
+ config false;
+ description
+ "The amount of local storage that can be
+ used to hold syslog messages.";
+ }
+ }
+}
diff --git a/plugin/src/test/resources/interfilefeatureinclude/featureFile4.yang b/plugin/src/test/resources/interfilefeatureinclude/featureFile4.yang
new file mode 100644
index 0000000..30e1ce5
--- /dev/null
+++ b/plugin/src/test/resources/interfilefeatureinclude/featureFile4.yang
@@ -0,0 +1,10 @@
+submodule syslog4 {
+ yang-version 1;
+ belongs-to "syslog3" {
+ prefix "sys3";
+ }
+
+ feature p2mp-te {
+ description "Indicates support for P2MP-TE";
+ }
+}
diff --git a/plugin/src/test/resources/interfilefeatureincludedependency/featurefile1.yang b/plugin/src/test/resources/interfilefeatureincludedependency/featurefile1.yang
new file mode 100644
index 0000000..a30c85a
--- /dev/null
+++ b/plugin/src/test/resources/interfilefeatureincludedependency/featurefile1.yang
@@ -0,0 +1,24 @@
+module syslog1 {
+ yang-version 1;
+ namespace "http://huawei3.com";
+ prefix "sys1";
+
+ include "syslog2";
+
+ feature frr-te {
+ description "Indicates support for TE FastReroute (FRR)";
+ if-feature "p2mp-te";
+ }
+
+ container speed {
+ leaf local-storage-limit {
+ if-feature frr-te;
+ type uint64;
+ units "kilobyte";
+ config false;
+ description
+ "The amount of local storage that can be
+ used to hold syslog messages.";
+ }
+ }
+}
diff --git a/plugin/src/test/resources/interfilefeatureincludedependency/featurefile2.yang b/plugin/src/test/resources/interfilefeatureincludedependency/featurefile2.yang
new file mode 100644
index 0000000..370490a
--- /dev/null
+++ b/plugin/src/test/resources/interfilefeatureincludedependency/featurefile2.yang
@@ -0,0 +1,16 @@
+submodule syslog2 {
+ yang-version 1;
+ belongs-to "syslog1" {
+ prefix "sys1";
+ }
+
+ import "syslog3" {
+ prefix "sys3";
+ }
+
+ feature p2mp-te {
+ description "Indicates support for P2MP-TE";
+ if-feature "sys3:extended-admin-groups";
+ }
+}
+
diff --git a/plugin/src/test/resources/interfilefeatureincludedependency/featurefile3.yang b/plugin/src/test/resources/interfilefeatureincludedependency/featurefile3.yang
new file mode 100644
index 0000000..13d6787
--- /dev/null
+++ b/plugin/src/test/resources/interfilefeatureincludedependency/featurefile3.yang
@@ -0,0 +1,11 @@
+module syslog3 {
+ yang-version 1;
+ namespace "http://huawei3.com";
+ prefix "sys3";
+
+ feature extended-admin-groups {
+ description
+ "Indicates support for TE link extended admin
+ groups.";
+ }
+}
diff --git a/plugin/src/test/resources/interfilefeatureincludedependencyUndefined/featurefile1.yang b/plugin/src/test/resources/interfilefeatureincludedependencyUndefined/featurefile1.yang
new file mode 100644
index 0000000..a30c85a
--- /dev/null
+++ b/plugin/src/test/resources/interfilefeatureincludedependencyUndefined/featurefile1.yang
@@ -0,0 +1,24 @@
+module syslog1 {
+ yang-version 1;
+ namespace "http://huawei3.com";
+ prefix "sys1";
+
+ include "syslog2";
+
+ feature frr-te {
+ description "Indicates support for TE FastReroute (FRR)";
+ if-feature "p2mp-te";
+ }
+
+ container speed {
+ leaf local-storage-limit {
+ if-feature frr-te;
+ type uint64;
+ units "kilobyte";
+ config false;
+ description
+ "The amount of local storage that can be
+ used to hold syslog messages.";
+ }
+ }
+}
diff --git a/plugin/src/test/resources/interfilefeatureincludedependencyUndefined/featurefile2.yang b/plugin/src/test/resources/interfilefeatureincludedependencyUndefined/featurefile2.yang
new file mode 100644
index 0000000..370490a
--- /dev/null
+++ b/plugin/src/test/resources/interfilefeatureincludedependencyUndefined/featurefile2.yang
@@ -0,0 +1,16 @@
+submodule syslog2 {
+ yang-version 1;
+ belongs-to "syslog1" {
+ prefix "sys1";
+ }
+
+ import "syslog3" {
+ prefix "sys3";
+ }
+
+ feature p2mp-te {
+ description "Indicates support for P2MP-TE";
+ if-feature "sys3:extended-admin-groups";
+ }
+}
+
diff --git a/plugin/src/test/resources/interfilefeatureincludedependencyUndefined/featurefile3.yang b/plugin/src/test/resources/interfilefeatureincludedependencyUndefined/featurefile3.yang
new file mode 100644
index 0000000..f638139
--- /dev/null
+++ b/plugin/src/test/resources/interfilefeatureincludedependencyUndefined/featurefile3.yang
@@ -0,0 +1,5 @@
+module syslog3 {
+ yang-version 1;
+ namespace "http://huawei3.com";
+ prefix "sys3";
+}
diff --git a/plugin/src/test/resources/interfileietf/ietf-te-topology.yang b/plugin/src/test/resources/interfileietf/ietf-te-topology.yang
index 849828f..b5fd1d9 100644
--- a/plugin/src/test/resources/interfileietf/ietf-te-topology.yang
+++ b/plugin/src/test/resources/interfileietf/ietf-te-topology.yang
@@ -68,7 +68,7 @@
* Features
*/
- /*feature configuration-schedule {
+ feature configuration-schedule {
description
"This feature indicates that the system supports
configuration scheduling.";
@@ -91,7 +91,7 @@
description
"This feature indicates that the system supports
template configuration.";
- }*/
+ }
/*
* Typedefs
diff --git a/plugin/src/test/resources/interfileietf/ietf-te-types.yang b/plugin/src/test/resources/interfileietf/ietf-te-types.yang
index 0962720..6268832 100644
--- a/plugin/src/test/resources/interfileietf/ietf-te-types.yang
+++ b/plugin/src/test/resources/interfileietf/ietf-te-types.yang
@@ -257,7 +257,7 @@
}*/
/* TE basic features */
- /*feature p2mp-te {
+ feature p2mp-te {
description
"Indicates support for P2MP-TE";
}
@@ -291,7 +291,7 @@
feature named-path-constraints {
description
"Indicates support for named path constraints";
- }*/
+ }
grouping explicit-route-subobject {
description