From b9871fc9ad20ef83b9a2ea9bdd004a0158d2bc49 Mon Sep 17 00:00:00 2001 From: Brian Kassouf Date: Wed, 14 Jun 2017 18:59:27 -0700 Subject: [PATCH] Use WeakDecode to decode the initialize values (#2871) --- plugins/database/cassandra/cassandra_test.go | 13 +++++++++++++ plugins/database/cassandra/connection_producer.go | 2 +- plugins/database/mongodb/connection_producer.go | 2 +- plugins/database/mssql/mssql_test.go | 11 +++++++++++ plugins/database/mysql/mysql_test.go | 11 +++++++++++ plugins/database/postgresql/postgresql_test.go | 15 ++++++++++++++- plugins/helper/database/connutil/sql.go | 2 +- 7 files changed, 52 insertions(+), 4 deletions(-) diff --git a/plugins/database/cassandra/cassandra_test.go b/plugins/database/cassandra/cassandra_test.go index 17f7d0a92a..b01b038478 100644 --- a/plugins/database/cassandra/cassandra_test.go +++ b/plugins/database/cassandra/cassandra_test.go @@ -99,6 +99,19 @@ func TestCassandra_Initialize(t *testing.T) { if err != nil { t.Fatalf("err: %s", err) } + + // test a string protocol + connectionDetails = map[string]interface{}{ + "hosts": connURL, + "username": "cassandra", + "password": "cassandra", + "protocol_version": "4", + } + + err = db.Initialize(connectionDetails, true) + if err != nil { + t.Fatalf("err: %s", err) + } } func TestCassandra_CreateUser(t *testing.T) { diff --git a/plugins/database/cassandra/connection_producer.go b/plugins/database/cassandra/connection_producer.go index 0b484d1c99..b344d125b1 100644 --- a/plugins/database/cassandra/connection_producer.go +++ b/plugins/database/cassandra/connection_producer.go @@ -46,7 +46,7 @@ func (c *cassandraConnectionProducer) Initialize(conf map[string]interface{}, ve c.Lock() defer c.Unlock() - err := mapstructure.Decode(conf, c) + err := mapstructure.WeakDecode(conf, c) if err != nil { return err } diff --git a/plugins/database/mongodb/connection_producer.go b/plugins/database/mongodb/connection_producer.go index 5fcfdecbdf..f802dc35e5 100644 --- a/plugins/database/mongodb/connection_producer.go +++ b/plugins/database/mongodb/connection_producer.go @@ -33,7 +33,7 @@ func (c *mongoDBConnectionProducer) Initialize(conf map[string]interface{}, veri c.Lock() defer c.Unlock() - err := mapstructure.Decode(conf, c) + err := mapstructure.WeakDecode(conf, c) if err != nil { return err } diff --git a/plugins/database/mssql/mssql_test.go b/plugins/database/mssql/mssql_test.go index e524455cc3..5a00890bf2 100644 --- a/plugins/database/mssql/mssql_test.go +++ b/plugins/database/mssql/mssql_test.go @@ -44,6 +44,17 @@ func TestMSSQL_Initialize(t *testing.T) { if err != nil { t.Fatalf("err: %s", err) } + + // Test decoding a string value for max_open_connections + connectionDetails = map[string]interface{}{ + "connection_url": connURL, + "max_open_connections": "5", + } + + err = db.Initialize(connectionDetails, true) + if err != nil { + t.Fatalf("err: %s", err) + } } func TestMSSQL_CreateUser(t *testing.T) { diff --git a/plugins/database/mysql/mysql_test.go b/plugins/database/mysql/mysql_test.go index 616859be8b..a9ccd5b783 100644 --- a/plugins/database/mysql/mysql_test.go +++ b/plugins/database/mysql/mysql_test.go @@ -84,6 +84,17 @@ func TestMySQL_Initialize(t *testing.T) { if err != nil { t.Fatalf("err: %s", err) } + + // Test decoding a string value for max_open_connections + connectionDetails = map[string]interface{}{ + "connection_url": connURL, + "max_open_connections": "5", + } + + err = db.Initialize(connectionDetails, true) + if err != nil { + t.Fatalf("err: %s", err) + } } func TestMySQL_CreateUser(t *testing.T) { diff --git a/plugins/database/postgresql/postgresql_test.go b/plugins/database/postgresql/postgresql_test.go index 944a3b7b5c..a74abb4339 100644 --- a/plugins/database/postgresql/postgresql_test.go +++ b/plugins/database/postgresql/postgresql_test.go @@ -63,7 +63,8 @@ func TestPostgreSQL_Initialize(t *testing.T) { defer cleanup() connectionDetails := map[string]interface{}{ - "connection_url": connURL, + "connection_url": connURL, + "max_open_connections": 5, } dbRaw, _ := New() @@ -84,6 +85,18 @@ func TestPostgreSQL_Initialize(t *testing.T) { if err != nil { t.Fatalf("err: %s", err) } + + // Test decoding a string value for max_open_connections + connectionDetails = map[string]interface{}{ + "connection_url": connURL, + "max_open_connections": "5", + } + + err = db.Initialize(connectionDetails, true) + if err != nil { + t.Fatalf("err: %s", err) + } + } func TestPostgreSQL_CreateUser(t *testing.T) { diff --git a/plugins/helper/database/connutil/sql.go b/plugins/helper/database/connutil/sql.go index 4cb9974429..c767c2081d 100644 --- a/plugins/helper/database/connutil/sql.go +++ b/plugins/helper/database/connutil/sql.go @@ -33,7 +33,7 @@ func (c *SQLConnectionProducer) Initialize(conf map[string]interface{}, verifyCo c.Lock() defer c.Unlock() - err := mapstructure.Decode(conf, c) + err := mapstructure.WeakDecode(conf, c) if err != nil { return err }