summaryrefslogtreecommitdiffstats
path: root/src/k8splugin/db
diff options
context:
space:
mode:
Diffstat (limited to 'src/k8splugin/db')
-rw-r--r--src/k8splugin/db/DB.go21
-rw-r--r--src/k8splugin/db/consul.go3
-rw-r--r--src/k8splugin/db/db_test.go57
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)
+ }
+}