adding license info

Change-Id: If300e60444c4896b9ade1b489633c41a299f0ef2
diff --git a/models/abstract/ChassisUtils_test.go b/models/abstract/ChassisUtils_test.go
new file mode 100644
index 0000000..ecc5752
--- /dev/null
+++ b/models/abstract/ChassisUtils_test.go
@@ -0,0 +1,39 @@
+/*
+ Copyright 2017 the original author or authors.
+
+ 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 abstract_test
+
+import (
+	"testing"
+
+	"gerrit.opencord.org/abstract-olt/models/abstract"
+)
+
+func TestChassisUtils_GenerateChassis(t *testing.T) {
+	chassis := abstract.GenerateChassis("MY_CLLI")
+	slot := chassis.Slots[6]
+	port := slot.Ports[0]
+	ont := port.Onts[3]
+	svlan := ont.Svlan
+	cvlan := ont.Cvlan
+	if svlan != 98 { // see map doc
+		t.Fail()
+	}
+	if cvlan != 434 { // see map doc
+		t.Fail()
+	}
+
+}
diff --git a/models/chassisMap.go b/models/chassisMap.go
index 30ae8e3..65e552d 100644
--- a/models/chassisMap.go
+++ b/models/chassisMap.go
@@ -17,25 +17,25 @@
 package models
 
 import (
-	"fmt"
+	"sync"
 
 	"gerrit.opencord.org/abstract-olt/models/abstract"
 	"gerrit.opencord.org/abstract-olt/models/physical"
 )
 
+var once sync.Once
+var absOnce sync.Once
 var chassisMap map[string]*physical.Chassis
-var abstractChassisMap map[string]*abstract.Chassis
+var aChassisMap map[string]*abstract.Chassis
 
 /*
 GetPhyChassisMap return the chassis map singleton
 */
 func GetPhyChassisMap() *map[string]*physical.Chassis {
-	if chassisMap == nil {
-		fmt.Println("chassisMap was nil")
+	// the go singleton pattern
+	once.Do(func() {
 		chassisMap = make(map[string]*physical.Chassis)
-
-	}
-	fmt.Printf("chassis map %v\n", chassisMap)
+	})
 	return &chassisMap
 }
 
@@ -43,11 +43,9 @@
 GetAbstractChassisMap return the chassis map singleton
 */
 func GetAbstractChassisMap() *map[string]*abstract.Chassis {
-	if abstractChassisMap == nil {
-		fmt.Println("chassisMap was nil")
-		abstractChassisMap = make(map[string]*abstract.Chassis)
-
-	}
-	fmt.Printf("chassis map %v\n", chassisMap)
-	return &abstractChassisMap
+	// the go singleton pattern
+	absOnce.Do(func() {
+		aChassisMap = make(map[string]*abstract.Chassis)
+	})
+	return &aChassisMap
 }
diff --git a/models/chassisMap_test.go b/models/chassisMap_test.go
new file mode 100644
index 0000000..7b30eeb
--- /dev/null
+++ b/models/chassisMap_test.go
@@ -0,0 +1,40 @@
+/*
+ Copyright 2017 the original author or authors.
+
+ 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 models_test
+
+import (
+	"testing"
+
+	"gerrit.opencord.org/abstract-olt/models"
+)
+
+func TestChassisMap_GetPhyChassisMap(t *testing.T) {
+	firstChassisMap := models.GetPhyChassisMap()
+	secondChassisMap := models.GetPhyChassisMap()
+
+	if firstChassisMap != secondChassisMap {
+		t.Fatalf("GetPhyChassisMap should always return pointer to same map")
+	}
+}
+func TestChassisMap_GetAbstractChassisMap(t *testing.T) {
+	firstChassisMap := models.GetAbstractChassisMap()
+	secondChassisMap := models.GetAbstractChassisMap()
+
+	if firstChassisMap != secondChassisMap {
+		t.Fatalf("GetPhyChassisMap should always return pointer to same map")
+	}
+}
diff --git a/models/physical/edgecore_test.go b/models/physical/edgecore_test.go
new file mode 100644
index 0000000..a7fbf68
--- /dev/null
+++ b/models/physical/edgecore_test.go
@@ -0,0 +1,41 @@
+/*
+ Copyright 2017 the original author or authors.
+
+ 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 physical_test
+
+import (
+	"net"
+	"testing"
+
+	"gerrit.opencord.org/abstract-olt/models/physical"
+)
+
+func TestPhysical_Edgecore(t *testing.T) {
+	clli := "test_clli"
+	chassis := physical.Chassis{CLLI: clli}
+	hostname := "my_name"
+	ip := "192.168.0.1"
+	port := 33
+	address := net.TCPAddr{IP: net.ParseIP(ip), Port: port}
+	parent := &chassis
+	switchPort := 3
+
+	olt := &physical.SimpleOLT{CLLI: clli, Hostname: hostname, Address: address, Parent: parent, DataSwitchPort: switchPort}
+	edgeCoreOlt := physical.CreateEdgecore(olt)
+	if edgeCoreOlt.GetCLLI() != clli {
+		t.Fatal("Failed to assign CLLI in CreateEdgecore")
+	}
+}