diff options
author | Kiran Kamineni <kiran.k.kamineni@intel.com> | 2018-10-31 16:24:32 -0700 |
---|---|---|
committer | Victor Morales <victor.morales@intel.com> | 2018-11-08 17:07:59 -0800 |
commit | 7d2d48d3d0b35de0acd03c6e8a1261efd736edc3 (patch) | |
tree | cdfc546b98fbea5df408f620387499984a78469f /src/k8splugin/db | |
parent | 985a6654725e3931737f1a0831bd3b44a0d99a28 (diff) |
Add vnf definition APIs3.0.0-ONAPcasablanca
Adding APIs for POST, GET, LIST (implemented via GET)
and DELETE commands on /v1/vnfd base for creating,
getting, listing and deleting VNF Definitions.
P2: Added unit tests for vnfdhandler.go
P3: Add unit tests for serialize and deserialize
P4: Integrating review comments
P5: Added customizable mocking for vnfdhandler_test
P6: Added customizablt mocking for vnfd_test
Note that this will soon need to be updated once
the db changes go through in patch 71090
Issue-ID: MULTICLOUD-393
Change-Id: Id509bed370ab3bdc572c6ead22324c1ee3dbf82d
Signed-off-by: Kiran Kamineni <kiran.k.kamineni@intel.com>
Signed-off-by: Victor Morales <victor.morales@intel.com>
Diffstat (limited to 'src/k8splugin/db')
-rw-r--r-- | src/k8splugin/db/DB.go | 21 | ||||
-rw-r--r-- | src/k8splugin/db/consul.go | 3 | ||||
-rw-r--r-- | src/k8splugin/db/db_test.go | 57 |
3 files changed, 80 insertions, 1 deletions
diff --git a/src/k8splugin/db/DB.go b/src/k8splugin/db/DB.go index c8895088..d92b5953 100644 --- a/src/k8splugin/db/DB.go +++ b/src/k8splugin/db/DB.go @@ -14,6 +14,9 @@ limitations under the License. package db import ( + "encoding/json" + "reflect" + pkgerrors "github.com/pkg/errors" ) @@ -40,3 +43,21 @@ var CreateDBClient = func(dbType string) error { return pkgerrors.New(dbType + "DB not supported") } } + +// Serialize converts given data into a JSON string +func Serialize(v interface{}) (string, error) { + out, err := json.Marshal(v) + if err != nil { + return "", pkgerrors.Wrap(err, "Error serializing "+reflect.TypeOf(v).String()) + } + return string(out), nil +} + +// DeSerialize converts string to a json object specified by type +func DeSerialize(str string, v interface{}) error { + err := json.Unmarshal([]byte(str), &v) + if err != nil { + return pkgerrors.Wrap(err, "Error deSerializing "+str) + } + return nil +} diff --git a/src/k8splugin/db/consul.go b/src/k8splugin/db/consul.go index 686d9348..950eea34 100644 --- a/src/k8splugin/db/consul.go +++ b/src/k8splugin/db/consul.go @@ -14,9 +14,10 @@ limitations under the License. package db import ( + "os" + consulapi "github.com/hashicorp/consul/api" pkgerrors "github.com/pkg/errors" - "os" ) // ConsulDB is an implementation of the DatabaseConnection interface diff --git a/src/k8splugin/db/db_test.go b/src/k8splugin/db/db_test.go index a5dc0eb8..d37cd7ae 100644 --- a/src/k8splugin/db/db_test.go +++ b/src/k8splugin/db/db_test.go @@ -40,3 +40,60 @@ func TestCreateDBClient(t *testing.T) { } }) } + +func TestSerialize(t *testing.T) { + + inp := map[string]interface{}{ + "UUID": "123e4567-e89b-12d3-a456-426655440000", + "Data": "sdaijsdiodalkfjsdlagf", + "Number": 23, + "Float": 34.4, + "Map": map[string]interface{}{ + "m1": "m1", + "m2": 2, + "m3": 3.0, + }, + } + + got, err := Serialize(inp) + if err != nil { + t.Fatal(err) + } + + expected := "{\"Data\":\"sdaijsdiodalkfjsdlagf\"," + + "\"Float\":34.4,\"Map\":{\"m1\":\"m1\",\"m2\":2,\"m3\":3}," + + "\"Number\":23,\"UUID\":\"123e4567-e89b-12d3-a456-426655440000\"}" + + if expected != got { + t.Errorf("Serialize returned unexpected string: %s;"+ + " expected %sv", got, expected) + } +} + +func TestDeSerialize(t *testing.T) { + + inp := "{\"Data\":\"sdaijsdiodalkfjsdlagf\"," + + "\"Float\":34.4,\"Map\":{\"m1\":\"m1\",\"m3\":3}," + + "\"UUID\":\"123e4567-e89b-12d3-a456-426655440000\"}" + + got := make(map[string]interface{}) + err := DeSerialize(inp, &got) + if err != nil { + t.Fatal(err) + } + + expected := map[string]interface{}{ + "UUID": "123e4567-e89b-12d3-a456-426655440000", + "Data": "sdaijsdiodalkfjsdlagf", + "Float": 34.4, + "Map": map[string]interface{}{ + "m1": "m1", + "m3": 3.0, + }, + } + + if reflect.DeepEqual(expected, got) == false { + t.Errorf("Serialize returned unexpected : %s;"+ + " expected %s", got, expected) + } +} |