adding license info
Change-Id: If300e60444c4896b9ade1b489633c41a299f0ef2
diff --git a/Makefile b/Makefile
index b41c5d9..591f6bb 100644
--- a/Makefile
+++ b/Makefile
@@ -43,8 +43,10 @@
--grpc-gateway_out=logtostderr=true:api \
api/abstract_olt_api.proto
+api/xos.go:
+
swagger:
- protoc -I api/ \
+ @protoc -I api/ \
-I${GOPATH}/src \
-I${GOPATH}/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis \
--swagger_out=logtostderr=true:api \
@@ -63,6 +65,11 @@
clean: ## Remove previous builds
@rm $(SERVER_OUT) $(CLIENT_OUT) $(API_OUT) $(API_REST_OUT) $(SWAGGER_OUT)
+ @rm -rf seba-api
+
+test: all
+ @go test ./...
+ @go test ./... -cover
help: ## Display this help screen
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
diff --git a/api/handler.go b/api/handler.go
index ec7ce86..7414e19 100644
--- a/api/handler.go
+++ b/api/handler.go
@@ -42,25 +42,25 @@
phyChassisMap := models.GetPhyChassisMap()
absChassisMap := models.GetAbstractChassisMap()
clli := in.GetCLLI()
-
chassis := (*phyChassisMap)[clli]
if chassis != nil {
return &AddChassisReturn{DeviceID: chassis.CLLI}, nil
}
abstractChassis := abstract.GenerateChassis(clli)
- phyChassis := physical.Chassis{CLLI: clli}
+ phyChassis := &physical.Chassis{CLLI: clli}
if settings.GetDebug() {
output := fmt.Sprintf("%v", abstractChassis)
formatted := strings.Replace(output, "{", "\n{", -1)
log.Printf("new chassis %s\n", formatted)
}
- (*phyChassisMap)[clli] = &phyChassis
+ (*phyChassisMap)[clli] = phyChassis
+ fmt.Printf("phy %v, abs %v\n", phyChassisMap, absChassisMap)
(*absChassisMap)[clli] = abstractChassis
return &AddChassisReturn{DeviceID: clli}, nil
}
/*
-AddOLTChassis adds an OLT chassis/line card to the Physical chassis
+CreateOLTChassis adds an OLT chassis/line card to the Physical chassis
*/
func (s *Server) CreateOLTChassis(ctx context.Context, in *AddOLTChassisMessage) (*AddOLTChassisReturn, error) {
fmt.Printf(" CreateOLTChassis %v \n", *in)
diff --git a/api/handler_test.go b/api/handler_test.go
new file mode 100644
index 0000000..6121242
--- /dev/null
+++ b/api/handler_test.go
@@ -0,0 +1,52 @@
+/*
+ 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 api_test
+
+import (
+ "fmt"
+ "testing"
+
+ "gerrit.opencord.org/abstract-olt/api"
+ "golang.org/x/net/context"
+)
+
+var clli string
+var ctx context.Context
+var server api.Server
+
+func TestHandler_CreateChassis(t *testing.T) {
+ fmt.Println("in handlerTest_CreateChassis")
+ ctx = context.Background()
+ server = api.Server{}
+ message := &api.AddChassisMessage{CLLI: "my cilli", VCoreIP: "192.168.0.1", VCorePort: 9191}
+ ret, err := server.CreateChassis(ctx, message)
+ if err != nil {
+ t.Fatalf("CreateChassis failed %v\n", err)
+ }
+ clli = ret.DeviceID
+
+}
+func TestHandler_CreateOLTChassis(t *testing.T) {
+ message := &api.AddOLTChassisMessage{CLLI: clli, SlotIP: "12.2.2.0", SlotPort: 9191,
+ Hostname: "SlotOne", Type: api.AddOLTChassisMessage_edgecore}
+ ret, err := server.CreateOLTChassis(ctx, message)
+ if err != nil {
+ t.Fatalf("CreateOLTChassis failed %v\n", err)
+ }
+ fmt.Printf("CreateOLTChassis success %v\n", ret)
+
+}
diff --git a/internal/pkg/settings/Settings_test.go b/internal/pkg/settings/Settings_test.go
new file mode 100644
index 0000000..ef8419f
--- /dev/null
+++ b/internal/pkg/settings/Settings_test.go
@@ -0,0 +1,30 @@
+/*
+ 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 settings_test
+
+import (
+ "testing"
+
+ "gerrit.opencord.org/abstract-olt/internal/pkg/settings"
+)
+
+func TestSettings_SetDebug(t *testing.T) {
+ settings.SetDebug(false)
+ if settings.GetDebug() {
+ t.Fatalf("Failed to set debug level")
+ }
+}
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")
+ }
+}
diff --git a/test/integration/serialize_test.go b/test/integration/serialize_test.go
index 9e8575f..fbc6932 100644
--- a/test/integration/serialize_test.go
+++ b/test/integration/serialize_test.go
@@ -17,7 +17,6 @@
package integration
import (
- "net"
"testing"
"gerrit.opencord.org/abstract-olt/internal/pkg/chassisSerialize"
@@ -42,22 +41,19 @@
}
func generateTestChassis() *abstract.Chassis {
- addr := net.TCPAddr{IP: net.IPv4(1, 2, 3, 4), Port: 500, Zone: "VCore ZONE"}
- chassis := abstract.Chassis{VCoreAddress: addr, CLLI: "CLLI STRING"}
+ chassis := abstract.GenerateChassis("My_CLLI")
var slots [16]abstract.Slot
for i := 0; i < 16; i++ {
- slots[i] = generateTestSlot(i, &chassis)
+ slots[i] = generateTestSlot(i, chassis)
}
chassis.Slots = slots
- return &chassis
+ return chassis
}
func generateTestSlot(n int, c *abstract.Chassis) abstract.Slot {
- addr := net.TCPAddr{IP: net.IPv4(1, 2, 3, byte(n)), Port: 400 + n, Zone: "Slot " + string(n) + "Zone"}
- slot := abstract.Slot{DeviceID: "Device Slot " + string(n), Hostname: "Host " + string(n),
- Address: addr, Number: n, Parent: c}
+ slot := abstract.Slot{Number: n, Parent: c}
var ports [16]abstract.Port
for i := 0; i < 16; i++ {
@@ -69,7 +65,7 @@
}
func generateTestPort(n int, s *abstract.Slot) abstract.Port {
- port := abstract.Port{Number: n, DeviceID: "Device Port " + string(n), Parent: s}
+ port := abstract.Port{Number: n, Parent: s}
var onts [64]abstract.Ont
for i := 0; i < 64; i++ {