aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--framework/scripts/README12
-rw-r--r--framework/scripts/function_test/Teston/Readme.txt5
-rw-r--r--framework/scripts/function_test/Teston/__init__.py0
-rw-r--r--framework/scripts/function_test/Teston/adapters/__init__.py0
-rw-r--r--framework/scripts/function_test/Teston/adapters/foundation.py64
-rw-r--r--framework/scripts/function_test/Teston/config.yaml16
-rw-r--r--framework/scripts/function_test/Teston/dependencies/onos23
-rw-r--r--framework/scripts/function_test/Teston/log/temp.log0
-rw-r--r--framework/scripts/function_test/Teston/onosfunctest.py21
-rw-r--r--framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/DefaultPortPair.java200
-rw-r--r--framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/PortPair.java140
-rw-r--r--framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/PortPairId.java92
12 files changed, 573 insertions, 0 deletions
diff --git a/framework/scripts/README b/framework/scripts/README
index e69de29b..df76de78 100644
--- a/framework/scripts/README
+++ b/framework/scripts/README
@@ -0,0 +1,12 @@
+1.Functon_test is a framework of running onosfw function testcases;
+2.Folder tree:
+ ©¤function_test
+ ©¸©¤Teston
+ ©À©¤adapters
+ ©À©¤dependencies
+ ©¸©¤log
+(1)adapters include some drivers of running onosfw test.
+(2)dependencies include some dependency files.
+(3)log inlude the running log.
+3.How to run the test?
+Easy to run, run "sudo python onosfunctest.py" in path "onosfw/framework/scripts/function_test/Teston" \ No newline at end of file
diff --git a/framework/scripts/function_test/Teston/Readme.txt b/framework/scripts/function_test/Teston/Readme.txt
new file mode 100644
index 00000000..7393f59a
--- /dev/null
+++ b/framework/scripts/function_test/Teston/Readme.txt
@@ -0,0 +1,5 @@
+1.This is a basic test run about onos,we will make them better and better
+2.This test include two suites:
+(1)Test northbound(network/subnet/ports create/update/delete)
+(2)Ovsdb test,default configuration,openflow connection,vm go onlines.
+3.Later we will make a framework to do this test \ No newline at end of file
diff --git a/framework/scripts/function_test/Teston/__init__.py b/framework/scripts/function_test/Teston/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/framework/scripts/function_test/Teston/__init__.py
diff --git a/framework/scripts/function_test/Teston/adapters/__init__.py b/framework/scripts/function_test/Teston/adapters/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/framework/scripts/function_test/Teston/adapters/__init__.py
diff --git a/framework/scripts/function_test/Teston/adapters/foundation.py b/framework/scripts/function_test/Teston/adapters/foundation.py
new file mode 100644
index 00000000..c909d36b
--- /dev/null
+++ b/framework/scripts/function_test/Teston/adapters/foundation.py
@@ -0,0 +1,64 @@
+"""
+Description:
+ This file include basis functions
+ lanqinglong@huawei.com
+"""
+
+import logging
+import os
+import time
+import yaml
+
+class foundation:
+
+ def __init__(self):
+
+ currentpath = os.getcwd()
+ self.logdir = os.path.join( currentpath, 'log' )
+ self.workhome = currentpath[0:currentpath.rfind('testcases')-1]
+ self.Result_DB = ''
+
+ def log (self, loginfo):
+ """
+ Record log in log directory for deploying test environment
+ parameters:
+ loginfo(input): record info
+ """
+ filename = time.strftime( '%Y-%m-%d-%H-%M-%S' ) + '.log'
+ filepath = os.path.join( self.logdir, filename )
+ logging.basicConfig( level=logging.INFO,
+ format = '%(asctime)s %(filename)s:%(message)s',
+ datefmt = '%d %b %Y %H:%M:%S',
+ filename = filepath,
+ filemode = 'w')
+ filelog = logging.FileHandler( filepath )
+ logging.getLogger( 'Functest' ).addHandler( filelog )
+ print loginfo
+ logging.info(loginfo)
+
+ def getdefaultpara( self ):
+ """
+ Get Default Parameters value
+ """
+ with open(self.workhome + "testcases/config_functest.yaml") as f:
+ functest_yaml = yaml.safe_load(f)
+ f.close()
+
+ self.Result_DB = str(functest_yaml.get("results").get("test_db_url"))
+ self.masterusername = str(functest_yaml.get("ONOS").get("general").\
+ get('onosbench_username'))
+ self.masterpassword = str(functest_yaml.get("ONOS").get("general").\
+ get("onosbench_password"))
+ self.agentusername = str(functest_yaml.get("ONOS").get("general").\
+ get("onoscli_username"))
+ self.agentpassword = str(functest_yaml.get("ONOS").get("general").\
+ get("onoscli_password"))
+ self.runtimeout = functest_yaml.get("ONOS").get("general").get("runtimeout")
+ self.OCT = str(functest_yaml.get("ONOS").get("environment").get("OCT"))
+ self.OC1 = str(functest_yaml.get("ONOS").get("environment").get("OC1"))
+ self.OC2 = str(functest_yaml.get("ONOS").get("environment").get("OC2"))
+ self.OC3 = str(functest_yaml.get("ONOS").get("environment").get("OC3"))
+ self.OCN = str(functest_yaml.get("ONOS").get("environment").get("OCN"))
+ self.OCN2 = str(functest_yaml.get("ONOS").get("environment").get("OCN2"))
+ self.localhost = self.OCT
+ return True \ No newline at end of file
diff --git a/framework/scripts/function_test/Teston/config.yaml b/framework/scripts/function_test/Teston/config.yaml
new file mode 100644
index 00000000..78afb01b
--- /dev/null
+++ b/framework/scripts/function_test/Teston/config.yaml
@@ -0,0 +1,16 @@
+ONOS:
+ general:
+ onosbench_username: 'root'
+ onosbench_password: 'root'
+ onoscli_username: 'root'
+ onoscli_password: 'root'
+ runtimeout: 300
+ environment:
+ OCT: '189.42.8.99'
+ OC1: '189.42.8.101'
+ OC2: '189.42.8.102'
+ OC3: '189.42.8.103'
+ OCN: '189.42.8.104'
+ OCN2: '189.42.8.105'
+results:
+ test_db_url: http://213.77.62.197 \ No newline at end of file
diff --git a/framework/scripts/function_test/Teston/dependencies/onos b/framework/scripts/function_test/Teston/dependencies/onos
new file mode 100644
index 00000000..d4d59e0f
--- /dev/null
+++ b/framework/scripts/function_test/Teston/dependencies/onos
@@ -0,0 +1,23 @@
+#!/bin/bash
+# -----------------------------------------------------------------------------
+# ONOS remote command-line client.
+# -----------------------------------------------------------------------------
+
+[ ! -d "$ONOS_ROOT" ] && echo "ONOS_ROOT is not defined" >&2 && exit 1
+. /root/.bashrc
+. $ONOS_ROOT/tools/build/envDefaults
+. $ONOS_ROOT/tools/test/bin/find-node.sh
+
+[ "$1" = "-w" ] && shift && onos-wait-for-start $1
+
+[ -n "$1" ] && OCI=$(find_node $1) && shift
+
+if which client 1>/dev/null 2>&1 && [ -z "$ONOS_USE_SSH" ]; then
+ # Use Karaf client only if we can and are allowed to
+ unset KARAF_HOME
+ client -h $OCI -u karaf "$@" 2>/dev/null
+else
+ # Otherwise use raw ssh; strict checking is off for dev environments only
+ #ssh -p 8101 -o StrictHostKeyChecking=no $OCI "$@"
+ sshpass -p karaf ssh -l karaf -p 8101 $OCI "$@"
+fi
diff --git a/framework/scripts/function_test/Teston/log/temp.log b/framework/scripts/function_test/Teston/log/temp.log
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/framework/scripts/function_test/Teston/log/temp.log
diff --git a/framework/scripts/function_test/Teston/onosfunctest.py b/framework/scripts/function_test/Teston/onosfunctest.py
new file mode 100644
index 00000000..e8524430
--- /dev/null
+++ b/framework/scripts/function_test/Teston/onosfunctest.py
@@ -0,0 +1,21 @@
+"""
+Description: This test is to run onos Teston VTN scripts
+
+List of test cases:
+CASE1 - Northbound NBI test network/subnet/ports
+CASE2 - Ovsdb test&Default configuration&Vm go online
+
+lanqinglong@huawei.com
+"""
+from adapters.client import client
+
+if __name__=="__main__":
+
+ main = client()
+ main.getdefaultpara()
+
+ #scripts to run
+ runhandle = main.onosstart()
+ main.RunScript(runhandle, "FUNCvirNetNB")
+ main.RunScript(runhandle, "FUNCovsdbtest")
+ main.onosclean( runhandle )
diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/DefaultPortPair.java b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/DefaultPortPair.java
new file mode 100644
index 00000000..ed480fb7
--- /dev/null
+++ b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/DefaultPortPair.java
@@ -0,0 +1,200 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * 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.
+ */
+package org.onosproject.vtnrsc.sfc;
+
+import static com.google.common.base.MoreObjects.toStringHelper;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.util.Objects;
+
+import org.onosproject.vtnrsc.TenantId;
+
+/**
+ * Implementation of port pair.
+ */
+public final class DefaultPortPair implements PortPair {
+
+ private final PortPairId portPairId;
+ private final TenantId tenantId;
+ private final String name;
+ private final String description;
+ private final String ingress;
+ private final String egress;
+
+ /**
+ * Default constructor to create Port Pair.
+ *
+ * @param portPairId port pair id
+ * @param tenantId tenant id
+ * @param name name of port pair
+ * @param description description of port pair
+ * @param ingress ingress port
+ * @param egress egress port
+ */
+ private DefaultPortPair(PortPairId portPairId, TenantId tenantId,
+ String name, String description,
+ String ingress, String egress) {
+
+ this.portPairId = portPairId;
+ this.tenantId = tenantId;
+ this.name = name;
+ this.description = description;
+ this.ingress = ingress;
+ this.egress = egress;
+ }
+
+ @Override
+ public PortPairId portPairId() {
+ return portPairId;
+ }
+
+ @Override
+ public TenantId tenantId() {
+ return tenantId;
+ }
+
+ @Override
+ public String name() {
+ return name;
+ }
+
+ @Override
+ public String description() {
+ return description;
+ }
+
+ @Override
+ public String ingress() {
+ return ingress;
+ }
+
+ @Override
+ public String egress() {
+ return egress;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(portPairId, tenantId, name, description,
+ ingress, egress);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj instanceof DefaultPortPair) {
+ DefaultPortPair that = (DefaultPortPair) obj;
+ return Objects.equals(portPairId, that.portPairId) &&
+ Objects.equals(tenantId, that.tenantId) &&
+ Objects.equals(name, that.name) &&
+ Objects.equals(description, that.description) &&
+ Objects.equals(ingress, that.ingress) &&
+ Objects.equals(egress, that.egress);
+ }
+ return false;
+ }
+
+ @Override
+ public boolean exactMatch(PortPair portPair) {
+ return this.equals(portPair) &&
+ Objects.equals(this.portPairId, portPair.portPairId()) &&
+ Objects.equals(this.tenantId, portPair.tenantId());
+ }
+
+ @Override
+ public String toString() {
+ return toStringHelper(this)
+ .add("id", portPairId.toString())
+ .add("tenantId", tenantId.tenantId())
+ .add("name", name)
+ .add("description", description)
+ .add("ingress", ingress)
+ .add("egress", egress)
+ .toString();
+ }
+
+ /**
+ * To create an instance of the builder.
+ *
+ * @return instance of builder
+ */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /**
+ * Builder class for Port pair.
+ */
+ public static final class Builder implements PortPair.Builder {
+
+ private PortPairId portPairId;
+ private TenantId tenantId;
+ private String name;
+ private String description;
+ private String ingress;
+ private String egress;
+
+ @Override
+ public Builder setId(PortPairId portPairId) {
+ this.portPairId = portPairId;
+ return this;
+ }
+
+ @Override
+ public Builder setTenantId(TenantId tenantId) {
+ this.tenantId = tenantId;
+ return this;
+ }
+
+ @Override
+ public Builder setName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ @Override
+ public Builder setDescription(String description) {
+ this.description = description;
+ return this;
+ }
+
+ @Override
+ public Builder setIngress(String ingress) {
+ this.ingress = ingress;
+ return this;
+ }
+
+ @Override
+ public Builder setEgress(String egress) {
+ this.egress = egress;
+ return this;
+ }
+
+ @Override
+ public PortPair build() {
+
+ checkNotNull(portPairId, "Port pair id cannot be null");
+ checkNotNull(tenantId, "Tenant id cannot be null");
+ checkNotNull(ingress, "Ingress of a port pair cannot be null");
+ checkNotNull(egress, "Egress of a port pair cannot be null");
+
+ return new DefaultPortPair(portPairId, tenantId, name, description,
+ ingress, egress);
+ }
+ }
+}
diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/PortPair.java b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/PortPair.java
new file mode 100644
index 00000000..e3df941d
--- /dev/null
+++ b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/PortPair.java
@@ -0,0 +1,140 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * 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.
+ */
+package org.onosproject.vtnrsc.sfc;
+
+import org.onosproject.vtnrsc.TenantId;
+
+/**
+ * Abstraction of an entity providing Port Pair information.
+ * A port pair represents a service function instance.
+ */
+public interface PortPair {
+
+ /**
+ * Returns the ID of this port Pair.
+ *
+ * @return the port pair id
+ */
+ PortPairId portPairId();
+
+ /**
+ * Returns the tenant id of this port pair.
+ *
+ * @return an tenant id
+ */
+ TenantId tenantId();
+
+ /**
+ * Returns the description of this port pair.
+ *
+ * @return description of port pair
+ */
+ String name();
+
+ /**
+ * Returns the description of this port pair.
+ *
+ * @return description of port pair
+ */
+ String description();
+
+ /**
+ * Returns the ingress port of this port pair.
+ *
+ * @return ingress of port pair
+ */
+ String ingress();
+
+ /**
+ * Returns the egress port of this port pair.
+ *
+ * @return egress of port pair
+ */
+ String egress();
+
+ /**
+ * Returns whether this port pair is an exact match to the port pair given
+ * in the argument.
+ * <p>
+ * Exact match means the Port port pairs match with the given port pair.
+ * It does not consider the port pair id, name and description.
+ * </p>
+ * @param portPair other port pair to match against
+ * @return true if the port pairs are an exact match, otherwise false
+ */
+ boolean exactMatch(PortPair portPair);
+
+ /**
+ * A port pair builder..
+ */
+ interface Builder {
+
+ /**
+ * Assigns the port pair id to this object.
+ *
+ * @param portPairId the port pair id
+ * @return this the builder object
+ */
+ Builder setId(PortPairId portPairId);
+
+ /**
+ * Assigns tenant id to this object.
+ *
+ * @param tenantId tenant id of the port pair
+ * @return this the builder object
+ */
+ Builder setTenantId(TenantId tenantId);
+
+ /**
+ * Assigns the name to this object.
+ *
+ * @param name name of the port pair
+ * @return this the builder object
+ */
+ Builder setName(String name);
+
+ /**
+ * Assigns the description to this object.
+ *
+ * @param description description of the port pair
+ * @return this the builder object
+ */
+ Builder setDescription(String description);
+
+ /**
+ * Assigns the ingress port to this object.
+ *
+ * @param port ingress port of the port pair
+ * @return this the builder object
+ */
+ Builder setIngress(String port);
+
+ /**
+ * Assigns the egress port to this object.
+ *
+ * @param port egress port of the port pair
+ * @return this the builder object
+ */
+ Builder setEgress(String port);
+
+ /**
+ * Builds a port pair object.
+ *
+ * @return a port pair.
+ */
+ PortPair build();
+ }
+}
diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/PortPairId.java b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/PortPairId.java
new file mode 100644
index 00000000..0209c23e
--- /dev/null
+++ b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/sfc/PortPairId.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * 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.
+ */
+package org.onosproject.vtnrsc.sfc;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.util.UUID;
+
+import com.google.common.base.Objects;
+
+/**
+ * Representation of a Port Pair ID.
+ */
+public final class PortPairId {
+
+ private final UUID portPairId;
+
+ /**
+ * Private constructor for port pair id.
+ *
+ * @param id UUID id of port pair
+ */
+ private PortPairId(UUID id) {
+ checkNotNull(id, "Port chain id can not be null");
+ this.portPairId = id;
+ }
+
+ /**
+ * Constructor to create port pair id from UUID.
+ *
+ * @param id UUID of port pair id
+ * @return object of port pair id
+ */
+ public static PortPairId portPairId(UUID id) {
+ return new PortPairId(id);
+ }
+
+ /**
+ * Constructor to create port pair id from string.
+ *
+ * @param id port pair id in string
+ * @return object of port pair id
+ */
+ public static PortPairId portPairId(String id) {
+ return new PortPairId(UUID.fromString(id));
+ }
+
+ /**
+ * Returns teh value of port pair id.
+ *
+ * @return port pair id
+ */
+ public UUID value() {
+ return portPairId;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+
+ if (obj.getClass() == this.getClass()) {
+ PortPairId that = (PortPairId) obj;
+ return Objects.equal(this.portPairId, that.portPairId);
+ }
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(this.portPairId);
+ }
+
+ @Override
+ public String toString() {
+ return portPairId.toString();
+ }
+}