Add SubmoduleEffectiveStatement.belongsTo()
[yangtools.git] / csit / pytest_lib.py
1 # Copyright (c) 2019 PANTHEON.tech s.r.o. All rights reserved.
2 #
3 # This program and the accompanying materials are made available under the
4 # terms of the Eclipse Public License v1.0 which accompanies this distribution,
5 # and is available at http://www.eclipse.org/legal/epl-v10.html
6
7 import paramiko
8
9 # variables
10 # NEW hashes
11 YANGMODELS_REPO_COMMIT_HASH = "76b82325c19bd2907acd344e6ef9bf2adfaae5cc"
12 OPENCONFIG_REPO_COMMIT_HASH = "00a27a5f0f3c472205ef293ab238e0530b610811"
13 # OLD hashes
14 # YANGMODELS_REPO_COMMIT_HASH = "cdd14114cdaf130be2b6bfce92538c05f6d7c07d"
15 # OPENCONFIG_REPO_COMMIT_HASH = "8062b1b45208b952598ad3c3aa9e5ebc4f03cc67"
16
17 YANGMODELS_REPO = "https://github.com/YangModels/yang"
18 OPENCONFIG_REPO = "https://github.com/openconfig/public"
19 TEST_TOOL_NAME = "yang-model-validator"
20 NEXUS_FALLBACK_URL_PART2 = "/content/repositories/opendaylight.release"
21 RELEASE_INTEGRATED_COMPONENTS = ["mdsal", "odlparent", "yangtools", "carpeople", "netconf"]
22 NEXUS_RELEASE_BASE_URL = "https://nexus.opendaylight.org/content/repositories/opendaylight.release"
23 ROOT="src/main/yang"
24
25 def execute_ssh_command(hostname, command, username, commands_as_list=False):
26     # created client using paramiko
27     client = paramiko.SSHClient()
28     client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
29     client.connect(hostname, username=username)
30     if commands_as_list:
31         for command in commands_as_list:
32             (stdin, stdout, stderr) = client.exec_command(command)
33             cmd_output = stdout.read()
34             error = stderr.read()
35     else:
36         (stdin, stdout, stderr) = client.exec_command(command)
37     exit_status=(stdout.channel.recv_exit_status())
38     cmd_output = stdout.read()
39     error = stderr.read()
40     client.close()
41     return [cmd_output, exit_status, error]
42
43 COMPONENT_MAPPING = {"netconf":"netconf-impl",
44                      "bgpcep":"pcep-impl",
45                      "carpeople":"clustering-it-model",
46                      "yangtools":"yang-data-impl",
47                      "bindingv1":"mdsal-binding-generator-impl",
48                      "odl-micro":"odlmicro-impl"}
49
50 delete_static_paths_list = [
51     "rm -vrf src/main/yang/.git",
52     "rm -vrf src/main/yang/experimental",
53     # excluding ieee/draft from test
54     "rm -vrf src/main/yang/standard/ieee/draft",
55     "rm -vrf src/main/yang/standard/ietf/DRAFT",
56     # excluding 4 files due error "Unexpected error processing source SourceIdentifier [ietf-network@2018-02-26]"
57     # bug reported here https://jira.opendaylight.org/browse/YANGTOOLS-1465
58     "rm -vfr src/main/yang/standard/ietf/RFC/ietf-te-topology-state.yang",
59     "rm -vfr src/main/yang/standard/ietf/RFC/ietf-te-topology-state@2020-08-06.yang",
60     "rm -vfr src/main/yang/standard/ietf/RFC/ietf-te-topology.yang",
61     "rm -vfr src/main/yang/standard/ietf/RFC/ietf-te-topology@2020-08-06.yang",
62     ## Removing entire juniper folder because it creates an OOM Crash with the validator tool.*** Keywords ***
63     ## Unsure if the yang models are the problem or something in the tool. This is being tracked here:
64     ## https://jira.opendaylight.org/browse/YANGTOOLS-1093
65     "rm -vrf src/main/yang/vendor/juniper"
66     ## Removing the cisco folder because there are over 30k yang files there and would increase the test time to something
67     ## unmanageable.
68     "rm -vrf src/main/yang/vendor/cisco",
69     ## Mount points may only be defined at either a container or a list, not anydata, lines 948
70     ## https://tools.ietf.org/html/rfc8528#section-3.1
71     "rm -vrf src/main/yang/standard/ietf/RFC/ietf-connectionless-oam@2019-04-16.yang",
72     ## removed dependency file from test standard/ietf/RFC/ietf-connectionless-oam@2019-04-16.yang
73     "rm -vrf src/main/yang/standard/ietf/RFC/ietf-connectionless-oam.yang",
74     ## removed dependecy file from test standard/ietf/RFC/ietf-connectionless-oam-methods@2019-04-16.yang
75     "rm -vrf src/main/yang/standard/ietf/RFC/ietf-connectionless-oam-methods.yang",
76     "rm -vrf src/main/yang/standard/ietf/RFC/ietf-connectionless-oam-methods@2019-04-16.yang",
77 ]
78
79 yang_model_paths = [
80     "/home/jenkins/src/main/yang/",
81     "/home/jenkins/src/main/yang/standard",
82     "/home/jenkins/src/main/yang/standard/etsi",
83     "/home/jenkins/src/main/yang/standard/etsi/NFV-SOL006-v3.6.1",
84     "/home/jenkins/src/main/yang/standard/etsi/NFV-SOL006-v2.6.1",
85     "/home/jenkins/src/main/yang/standard/etsi/NFV-SOL006-v2.7.1",
86     "/home/jenkins/src/main/yang/standard/etsi/NFV-SOL006-v2.8.1",
87     "/home/jenkins/src/main/yang/standard/etsi/NFV-SOL006-v3.3.1",
88     "/home/jenkins/src/main/yang/standard/etsi/NFV-SOL006-v3.5.1",
89     "/home/jenkins/src/main/yang/standard/odp",
90     "/home/jenkins/src/main/yang/standard/bbf",
91     "/home/jenkins/src/main/yang/standard/ietf",
92     "/home/jenkins/src/main/yang/standard/ietf/RFC",
93     "/home/jenkins/src/main/yang/standard/mef",
94     "/home/jenkins/src/main/yang/standard/ieee",
95     "/home/jenkins/src/main/yang/standard/ieee/published",
96     "/home/jenkins/src/main/yang/standard/ieee/published/802.1",
97     "/home/jenkins/src/main/yang/standard/ieee/published/802.11",
98     "/home/jenkins/src/main/yang/standard/ieee/published/802",
99     "/home/jenkins/src/main/yang/standard/ieee/published/1588",
100     "/home/jenkins/src/main/yang/standard/ieee/published/802.3",
101     "/home/jenkins/src/main/yang/standard/ieee/published/1906.1",
102     "/home/jenkins/src/main/yang/standard/ieee/published/1906.1/Examples",
103     "/home/jenkins/src/main/yang/standard/iana",
104     "/home/jenkins/src/main/yang/vendor",
105     "/home/jenkins/src/main/yang/vendor/fujitsu",
106     "/home/jenkins/src/main/yang/vendor/huawei",
107     "/home/jenkins/src/main/yang/vendor/ciena",
108     "/home/jenkins/src/main/yang/vendor/nokia"
109 ]