diff --git a/common_utils/notification_producer.go b/common_utils/notification_producer.go index ea9793d7f..1463032d8 100644 --- a/common_utils/notification_producer.go +++ b/common_utils/notification_producer.go @@ -1,12 +1,14 @@ package common_utils import ( + "context" "encoding/json" "fmt" - "github.com/go-redis/redis" - log "github.com/golang/glog" sdcfg "github.com/sonic-net/sonic-gnmi/sonic_db_config" + + log "github.com/golang/glog" + "github.com/redis/go-redis/v9" ) const ( @@ -35,7 +37,7 @@ func GetRedisDBClient() (*redis.Client, error) { if rclient == nil { return nil, fmt.Errorf("Cannot create redis client.") } - if _, err := rclient.Ping().Result(); err != nil { + if _, err := rclient.Ping(context.Background()).Result(); err != nil { return nil, err } return rclient, nil @@ -85,5 +87,5 @@ func (n *NotificationProducer) Send(op, data string, kvs map[string]string) erro return err } log.Infof("Publishing to channel %s: %v.", n.ch, string(val)) - return n.rc.Publish(n.ch, val).Err() + return n.rc.Publish(context.Background(), n.ch, val).Err() } diff --git a/dialout/dialout_client/dialout_client.go b/dialout/dialout_client/dialout_client.go index 122a1212c..d5aa17983 100644 --- a/dialout/dialout_client/dialout_client.go +++ b/dialout/dialout_client/dialout_client.go @@ -1,27 +1,27 @@ package telemetry_dialout import ( - // "encoding/json" + "context" "crypto/tls" "errors" "fmt" + "net" + "strconv" + "strings" + "sync" + "time" + + spb "github.com/sonic-net/sonic-gnmi/proto" + sdc "github.com/sonic-net/sonic-gnmi/sonic_data_client" + sdcfg "github.com/sonic-net/sonic-gnmi/sonic_db_config" + "github.com/Workiva/go-datastructures/queue" - "github.com/go-redis/redis" log "github.com/golang/glog" gpb "github.com/openconfig/gnmi/proto/gnmi" "github.com/openconfig/ygot/ygot" - spb "github.com/sonic-net/sonic-gnmi/proto" - sdc "github.com/sonic-net/sonic-gnmi/sonic_data_client" - sdcfg "github.com/sonic-net/sonic-gnmi/sonic_db_config" - "golang.org/x/net/context" + "github.com/redis/go-redis/v9" "google.golang.org/grpc" "google.golang.org/grpc/credentials" - "net" - //"reflect" - "strconv" - "strings" - "sync" - "time" ) const ( @@ -468,7 +468,7 @@ func processTelemetryClientConfig(ctx context.Context, redisDb *redis.Client, ke return err } tableKey := "TELEMETRY_CLIENT" + separator + key - fv, err := redisDb.HGetAll(tableKey).Result() + fv, err := redisDb.HGetAll(context.Background(), tableKey).Result() if err != nil { log.V(2).Infof("redis HGetAll failed for %s with error %v", tableKey, err) return fmt.Errorf("redis HGetAll failed for %s with error %v", tableKey, err) @@ -687,10 +687,10 @@ func DialOutRun(ctx context.Context, ccfg *ClientConfig) error { prefixLen := len(pattern) pattern += "*" - pubsub := redisDb.PSubscribe(pattern) + pubsub := redisDb.PSubscribe(context.Background(), pattern) defer pubsub.Close() - msgi, err := pubsub.ReceiveTimeout(time.Second) + msgi, err := pubsub.ReceiveTimeout(context.Background(), time.Second) if err != nil { log.V(1).Infof("psubscribe to %s failed %v", pattern, err) return fmt.Errorf("psubscribe to %s failed %v", pattern, err) @@ -704,7 +704,7 @@ func DialOutRun(ctx context.Context, ccfg *ClientConfig) error { var dbkeys []string dbkey_prefix := "TELEMETRY_CLIENT" + separator - dbkeys, err = redisDb.Keys(dbkey_prefix + "*").Result() + dbkeys, err = redisDb.Keys(context.Background(), dbkey_prefix+"*").Result() if err != nil { log.V(2).Infof("redis Keys failed for %v with err %v", pattern, err) return err @@ -715,7 +715,7 @@ func DialOutRun(ctx context.Context, ccfg *ClientConfig) error { } for { - msgi, err := pubsub.ReceiveTimeout(time.Millisecond * 1000) + msgi, err := pubsub.ReceiveTimeout(context.Background(), time.Millisecond*1000) if err != nil { neterr, ok := err.(net.Error) if ok { diff --git a/dialout/dialout_client/dialout_client_test.go b/dialout/dialout_client/dialout_client_test.go index 77eb486a1..33732e3e4 100644 --- a/dialout/dialout_client/dialout_client_test.go +++ b/dialout/dialout_client/dialout_client_test.go @@ -4,22 +4,9 @@ package telemetry_dialout // Prerequisite: redis-server should be running. import ( + "context" "crypto/tls" "encoding/json" - "github.com/go-redis/redis" - //"github.com/golang/protobuf/proto" - testcert "github.com/sonic-net/sonic-gnmi/testdata/tls" - - //"github.com/kylelemons/godebug/pretty" - //"github.com/openconfig/gnmi/client" - pb "github.com/openconfig/gnmi/proto/gnmi" - "github.com/openconfig/gnmi/value" - "golang.org/x/net/context" - "google.golang.org/grpc" - //"google.golang.org/grpc/codes" - "google.golang.org/grpc/credentials" - //"google.golang.org/grpc/status" - //"fmt" "io/ioutil" "os" "os/exec" @@ -28,10 +15,17 @@ import ( "testing" "time" - gclient "github.com/openconfig/gnmi/client/gnmi" sds "github.com/sonic-net/sonic-gnmi/dialout/dialout_server" sdc "github.com/sonic-net/sonic-gnmi/sonic_data_client" sdcfg "github.com/sonic-net/sonic-gnmi/sonic_db_config" + testcert "github.com/sonic-net/sonic-gnmi/testdata/tls" + + gclient "github.com/openconfig/gnmi/client/gnmi" + pb "github.com/openconfig/gnmi/proto/gnmi" + "github.com/openconfig/gnmi/value" + "github.com/redis/go-redis/v9" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials" ) var clientTypes = []string{gclient.Type} @@ -56,7 +50,7 @@ func loadDB(t *testing.T, rclient *redis.Client, mpi map[string]interface{}) { for key, fv := range mpi { switch fv.(type) { case map[string]interface{}: - _, err := rclient.HMSet(key, fv.(map[string]interface{})).Result() + _, err := rclient.HMSet(context.Background(), key, fv.(map[string]interface{})).Result() if err != nil { t.Fatal("Invalid data for db: ", key, fv, err) } @@ -111,7 +105,7 @@ func getRedisClient(t *testing.T) *redis.Client { DB: db, DialTimeout: 0, }) - _, err = rclient.Ping().Result() + _, err = rclient.Ping(context.Background()).Result() if err != nil { t.Fatal("failed to connect to redis server ", err) } @@ -149,7 +143,7 @@ func getConfigDbClient(t *testing.T) *redis.Client { DB: db, DialTimeout: 0, }) - _, err = rclient.Ping().Result() + _, err = rclient.Ping(context.Background()).Result() if err != nil { t.Fatalf("failed to connect to redis server %v", err) } @@ -160,7 +154,7 @@ func loadConfigDB(t *testing.T, rclient *redis.Client, mpi map[string]interface{ for key, fv := range mpi { switch fv.(type) { case map[string]interface{}: - _, err := rclient.HMSet(key, fv.(map[string]interface{})).Result() + _, err := rclient.HMSet(context.Background(), key, fv.(map[string]interface{})).Result() if err != nil { t.Errorf("Invalid data for db: %v : %v %v", key, fv, err) } @@ -173,7 +167,7 @@ func loadConfigDB(t *testing.T, rclient *redis.Client, mpi map[string]interface{ func prepareConfigDb(t *testing.T) { rclient := getConfigDbClient(t) defer rclient.Close() - rclient.FlushDB() + rclient.FlushDB(context.Background()) fileName := "../../testdata/COUNTERS_PORT_ALIAS_MAP.txt" countersPortAliasMapByte, err := ioutil.ReadFile(fileName) @@ -195,7 +189,7 @@ func prepareConfigDb(t *testing.T) { func prepareDb(t *testing.T) { rclient := getRedisClient(t) defer rclient.Close() - rclient.FlushDB() + rclient.FlushDB(context.Background()) //Enable keysapce notification os.Setenv("PATH", "$PATH:/usr/bin:/sbin:/bin:/usr/local/bin:/usr/local/Cellar/redis/4.0.8/bin") cmd := exec.Command("redis-cli", "config", "set", "notify-keyspace-events", "KEA") @@ -483,9 +477,9 @@ func TestGNMIDialOutPublish(t *testing.T) { for _, update := range tt.updates { switch update.op { case "hdel": - rclient.HDel(update.tableName+update.delimitor+update.tableKey, update.field) + rclient.HDel(context.Background(), update.tableName+update.delimitor+update.tableKey, update.field) default: - rclient.HSet(update.tableName+update.delimitor+update.tableKey, update.field, update.value) + rclient.HSet(context.Background(), update.tableName+update.delimitor+update.tableKey, update.field, update.value) } time.Sleep(time.Millisecond * 500) } diff --git a/dialout/dialout_client_cli/dialout_client_cli.go b/dialout/dialout_client_cli/dialout_client_cli.go index b6156fcc6..d66c6fae0 100644 --- a/dialout/dialout_client_cli/dialout_client_cli.go +++ b/dialout/dialout_client_cli/dialout_client_cli.go @@ -2,15 +2,17 @@ package main import ( + "context" "crypto/tls" "flag" - log "github.com/golang/glog" - gpb "github.com/openconfig/gnmi/proto/gnmi" - dc "github.com/sonic-net/sonic-gnmi/dialout/dialout_client" - "golang.org/x/net/context" "os" "os/signal" "time" + + dc "github.com/sonic-net/sonic-gnmi/dialout/dialout_client" + + log "github.com/golang/glog" + gpb "github.com/openconfig/gnmi/proto/gnmi" ) var ( diff --git a/gnmi_server/chassis_state_db_test.go b/gnmi_server/chassis_state_db_test.go index b76e0cc2f..146b7793f 100644 --- a/gnmi_server/chassis_state_db_test.go +++ b/gnmi_server/chassis_state_db_test.go @@ -4,6 +4,7 @@ package gnmi // Covers: Poll mode, Sample mode, and Get operations for DPU_STATE table import ( + "context" "crypto/tls" "encoding/json" "io/ioutil" @@ -11,12 +12,12 @@ import ( "testing" "time" - "github.com/go-redis/redis" + sdcfg "github.com/sonic-net/sonic-gnmi/sonic_db_config" + "github.com/kylelemons/godebug/pretty" "github.com/openconfig/gnmi/client" pb "github.com/openconfig/gnmi/proto/gnmi" - sdcfg "github.com/sonic-net/sonic-gnmi/sonic_db_config" - "golang.org/x/net/context" + "github.com/redis/go-redis/v9" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/credentials" @@ -38,7 +39,7 @@ func getChassisStateDbRedisClient(t *testing.T, namespace string) *redis.Client DB: db, DialTimeout: 0, }) - _, err = rclient.Ping().Result() + _, err = rclient.Ping(context.Background()).Result() if err != nil { t.Fatalf("failed to connect to redis server %v", err) } @@ -49,7 +50,7 @@ func getChassisStateDbRedisClient(t *testing.T, namespace string) *redis.Client func prepareChassisStateDb(t *testing.T, namespace string) { rclient := getChassisStateDbRedisClient(t, namespace) defer rclient.Close() - rclient.FlushDB() + rclient.FlushDB(context.Background()) fileName := "../testdata/DPU_STATE.txt" dpuStateBytes, err := ioutil.ReadFile(fileName) diff --git a/gnmi_server/cli_helpers_test.go b/gnmi_server/cli_helpers_test.go index 54c5b2ee7..baeb4cadc 100644 --- a/gnmi_server/cli_helpers_test.go +++ b/gnmi_server/cli_helpers_test.go @@ -1,6 +1,7 @@ package gnmi import ( + "context" "io/ioutil" "os/exec" "reflect" @@ -55,7 +56,7 @@ func FlushDataSet(t *testing.T, dbNum int) { ns, _ := sdcfg.GetDbDefaultNamespace() rclient := getRedisClientN(t, dbNum, ns) defer rclient.Close() - rclient.FlushDB() + rclient.FlushDB(context.Background()) } func AddDataSet(t *testing.T, dbNum int, fileName string) { diff --git a/gnmi_server/connection_manager.go b/gnmi_server/connection_manager.go index f4406f8f0..349eff371 100644 --- a/gnmi_server/connection_manager.go +++ b/gnmi_server/connection_manager.go @@ -1,14 +1,16 @@ package gnmi import ( - log "github.com/golang/glog" + "context" "net" "regexp" "sync" "time" - "github.com/go-redis/redis" sdcfg "github.com/sonic-net/sonic-gnmi/sonic_db_config" + + log "github.com/golang/glog" + "github.com/redis/go-redis/v9" ) const table = "TELEMETRY_CONNECTIONS" @@ -45,14 +47,14 @@ func (cm *ConnectionManager) PrepareRedis() { DialTimeout: 0, }) - res, _ := rclient.HGetAll("TELEMETRY_CONNECTIONS").Result() + res, _ := rclient.HGetAll(context.Background(), "TELEMETRY_CONNECTIONS").Result() if res == nil { return } for key, _ := range res { - rclient.HDel(table, key) + rclient.HDel(context.Background(), table, key) } } @@ -109,8 +111,7 @@ func storeKeyRedis(key string) { log.V(1).Infof("Redis client is nil, cannot store connection key") return } - ret, err := rclient.HSet(table, key, "active").Result() - if !ret { + if _, err := rclient.HSet(context.Background(), table, key, "active").Result(); err != nil { log.V(1).Infof("Subscribe client failed to update telemetry connection key:%s err:%v", key, err) } } @@ -121,7 +122,7 @@ func deleteKeyRedis(key string) { return } - ret, err := rclient.HDel(table, key).Result() + ret, err := rclient.HDel(context.Background(), table, key).Result() if ret == 0 { log.V(1).Infof("Subscribe client failed to delete telemetry connection key:%s err:%v", key, err) } diff --git a/gnmi_server/gnoi_system.go b/gnmi_server/gnoi_system.go index a88d48747..290381e80 100644 --- a/gnmi_server/gnoi_system.go +++ b/gnmi_server/gnoi_system.go @@ -7,13 +7,14 @@ import ( "strings" "time" - "github.com/go-redis/redis" - log "github.com/golang/glog" - "github.com/golang/protobuf/proto" - syspb "github.com/openconfig/gnoi/system" "github.com/sonic-net/sonic-gnmi/common_utils" "github.com/sonic-net/sonic-gnmi/pkg/gnoi/system" ssc "github.com/sonic-net/sonic-gnmi/sonic_service_client" + + log "github.com/golang/glog" + "github.com/golang/protobuf/proto" + syspb "github.com/openconfig/gnoi/system" + "github.com/redis/go-redis/v9" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" pjson "google.golang.org/protobuf/encoding/protojson" @@ -120,8 +121,8 @@ func sendRebootReqOnNotifCh(ctx context.Context, req proto.Message, sc *redis.Cl defer np.Close() // Subscribe to the response channel. - sub := sc.Subscribe(rebootRespCh) - if _, err = sub.Receive(); err != nil { + sub := sc.Subscribe(ctx, rebootRespCh) + if _, err = sub.Receive(ctx); err != nil { return nil, status.Errorf(codes.Internal, err.Error()), msgDataStr } defer sub.Close() diff --git a/gnmi_server/gnoi_system_test.go b/gnmi_server/gnoi_system_test.go index 74a075649..3c762c23f 100644 --- a/gnmi_server/gnoi_system_test.go +++ b/gnmi_server/gnoi_system_test.go @@ -8,11 +8,11 @@ import ( "testing" "time" - "github.com/go-redis/redis" + "github.com/sonic-net/sonic-gnmi/common_utils" + syspb "github.com/openconfig/gnoi/system" typespb "github.com/openconfig/gnoi/types" - - "github.com/sonic-net/sonic-gnmi/common_utils" + "github.com/redis/go-redis/v9" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/credentials" @@ -36,8 +36,8 @@ func testErr(err error, code codes.Code, pattern string, t *testing.T) { } func RebootBackendResponse(t *testing.T, sc *redis.Client, expectedResponse codes.Code, fvs map[string]string, done chan bool, key string) { - sub := sc.Subscribe("Reboot_Request_Channel") - if _, err := sub.Receive(); err != nil { + sub := sc.Subscribe(context.Background(), "Reboot_Request_Channel") + if _, err := sub.Receive(context.Background()); err != nil { t.Errorf("RebootBackendResponse failed to subscribe to request channel: %v", err) return } diff --git a/gnmi_server/poll_mode_test.go b/gnmi_server/poll_mode_test.go index 0ba501c1b..1d1ea53c3 100644 --- a/gnmi_server/poll_mode_test.go +++ b/gnmi_server/poll_mode_test.go @@ -3,17 +3,18 @@ package gnmi // server_test covers gNMI get, subscribe (stream and poll) test // Prerequisite: redis-server should be running. import ( + "context" "crypto/tls" "encoding/json" - "github.com/kylelemons/godebug/pretty" - "github.com/openconfig/gnmi/client" - sdcfg "github.com/sonic-net/sonic-gnmi/sonic_db_config" - "golang.org/x/net/context" "io/ioutil" "reflect" "sync" "testing" "time" + + "github.com/kylelemons/godebug/pretty" + "github.com/openconfig/gnmi/client" + sdcfg "github.com/sonic-net/sonic-gnmi/sonic_db_config" ) func TestPollMissingTableThenTableKey(t *testing.T) { @@ -67,7 +68,7 @@ func TestPollMissingTableThenTableKey(t *testing.T) { ns, _ := sdcfg.GetDbDefaultNamespace() rclient := getRedisClientN(t, 0, ns) defer rclient.Close() - rclient.FlushDB() + rclient.FlushDB(context.Background()) var mutexGotNoti sync.Mutex for _, tt := range tests { @@ -161,7 +162,7 @@ func TestPollMissingTableAndTableKey(t *testing.T) { ns, _ := sdcfg.GetDbDefaultNamespace() rclient := getRedisClientN(t, 0, ns) defer rclient.Close() - rclient.FlushDB() + rclient.FlushDB(context.Background()) var mutexGotNoti sync.Mutex for _, tt := range tests { @@ -270,7 +271,7 @@ func TestPollMissingTableThenAdded(t *testing.T) { ns, _ := sdcfg.GetDbDefaultNamespace() rclient := getRedisClientN(t, 0, ns) defer rclient.Close() - rclient.FlushDB() + rclient.FlushDB(context.Background()) var mutexGotNoti sync.Mutex @@ -307,8 +308,8 @@ func TestPollMissingTableThenAdded(t *testing.T) { for i := 0; i < tt.poll; i++ { if i == 2 { // After first 2 polls, add data - rclient.HSet("LLDP_ENTRY_TABLE:eth0", "lldp_rem_port_id", "dummy") - rclient.HSet("LLDP_ENTRY_TABLE:eth0", "lldp_rem_sys_name", "dummy") + rclient.HSet(context.Background(), "LLDP_ENTRY_TABLE:eth0", "lldp_rem_port_id", "dummy") + rclient.HSet(context.Background(), "LLDP_ENTRY_TABLE:eth0", "lldp_rem_sys_name", "dummy") // Sleep just one second to allow redis data to be entered time.Sleep(time.Millisecond * 1000) } @@ -385,7 +386,7 @@ func TestPollMissingKeyThenAdded(t *testing.T) { ns, _ := sdcfg.GetDbDefaultNamespace() rclient := getRedisClientN(t, 0, ns) defer rclient.Close() - rclient.FlushDB() + rclient.FlushDB(context.Background()) var mutexGotNoti sync.Mutex @@ -422,8 +423,8 @@ func TestPollMissingKeyThenAdded(t *testing.T) { for i := 0; i < tt.poll; i++ { if i == 2 { // After first 2 polls, add data - rclient.HSet("ROUTE_TABLE:0.0.0.0/0", "ifname", "dummy") - rclient.HSet("ROUTE_TABLE:0.0.0.0/0", "nexthop", "dummy") + rclient.HSet(context.Background(), "ROUTE_TABLE:0.0.0.0/0", "ifname", "dummy") + rclient.HSet(context.Background(), "ROUTE_TABLE:0.0.0.0/0", "nexthop", "dummy") // Sleep just one second to allow redis data to be entered time.Sleep(time.Millisecond * 1000) } @@ -511,7 +512,7 @@ func TestPollMissingTableAndKeyThenAdded(t *testing.T) { ns, _ := sdcfg.GetDbDefaultNamespace() rclient := getRedisClientN(t, 0, ns) defer rclient.Close() - rclient.FlushDB() + rclient.FlushDB(context.Background()) var mutexGotNoti sync.Mutex @@ -548,10 +549,10 @@ func TestPollMissingTableAndKeyThenAdded(t *testing.T) { for i := 0; i < tt.poll; i++ { if i == 2 { // After first 2 polls, add data - rclient.HSet("LLDP_ENTRY_TABLE:eth0", "lldp_rem_port_id", "dummy") - rclient.HSet("LLDP_ENTRY_TABLE:eth0", "lldp_rem_sys_name", "dummy") - rclient.HSet("ROUTE_TABLE:0.0.0.0/0", "ifname", "dummy") - rclient.HSet("ROUTE_TABLE:0.0.0.0/0", "nexthop", "dummy") + rclient.HSet(context.Background(), "LLDP_ENTRY_TABLE:eth0", "lldp_rem_port_id", "dummy") + rclient.HSet(context.Background(), "LLDP_ENTRY_TABLE:eth0", "lldp_rem_sys_name", "dummy") + rclient.HSet(context.Background(), "ROUTE_TABLE:0.0.0.0/0", "ifname", "dummy") + rclient.HSet(context.Background(), "ROUTE_TABLE:0.0.0.0/0", "nexthop", "dummy") // Sleep just one second to allow redis data to be entered time.Sleep(time.Millisecond * 1000) } @@ -654,9 +655,9 @@ func TestPollPresentTableMissingTableKey(t *testing.T) { ns, _ := sdcfg.GetDbDefaultNamespace() rclient := getRedisClientN(t, 0, ns) defer rclient.Close() - rclient.FlushDB() - rclient.HSet("LLDP_ENTRY_TABLE:eth0", "lldp_rem_port_id", "dummy") - rclient.HSet("LLDP_ENTRY_TABLE:eth0", "lldp_rem_sys_name", "dummy") + rclient.FlushDB(context.Background()) + rclient.HSet(context.Background(), "LLDP_ENTRY_TABLE:eth0", "lldp_rem_port_id", "dummy") + rclient.HSet(context.Background(), "LLDP_ENTRY_TABLE:eth0", "lldp_rem_sys_name", "dummy") var mutexGotNoti sync.Mutex @@ -693,8 +694,8 @@ func TestPollPresentTableMissingTableKey(t *testing.T) { for i := 0; i < tt.poll; i++ { if i == 2 { // After first 2 polls, add data - rclient.HSet("ROUTE_TABLE:0.0.0.0/0", "ifname", "dummy") - rclient.HSet("ROUTE_TABLE:0.0.0.0/0", "nexthop", "dummy") + rclient.HSet(context.Background(), "ROUTE_TABLE:0.0.0.0/0", "ifname", "dummy") + rclient.HSet(context.Background(), "ROUTE_TABLE:0.0.0.0/0", "nexthop", "dummy") // Sleep just one second to allow redis data to be entered time.Sleep(time.Millisecond * 1000) } @@ -796,9 +797,9 @@ func TestPollPresentTableKeyMissingTable(t *testing.T) { ns, _ := sdcfg.GetDbDefaultNamespace() rclient := getRedisClientN(t, 0, ns) defer rclient.Close() - rclient.FlushDB() - rclient.HSet("ROUTE_TABLE:0.0.0.0/0", "ifname", "dummy") - rclient.HSet("ROUTE_TABLE:0.0.0.0/0", "nexthop", "dummy") + rclient.FlushDB(context.Background()) + rclient.HSet(context.Background(), "ROUTE_TABLE:0.0.0.0/0", "ifname", "dummy") + rclient.HSet(context.Background(), "ROUTE_TABLE:0.0.0.0/0", "nexthop", "dummy") var mutexGotNoti sync.Mutex @@ -835,8 +836,8 @@ func TestPollPresentTableKeyMissingTable(t *testing.T) { for i := 0; i < tt.poll; i++ { if i == 2 { // After first 2 polls, add data - rclient.HSet("LLDP_ENTRY_TABLE:eth0", "lldp_rem_port_id", "dummy") - rclient.HSet("LLDP_ENTRY_TABLE:eth0", "lldp_rem_sys_name", "dummy") + rclient.HSet(context.Background(), "LLDP_ENTRY_TABLE:eth0", "lldp_rem_port_id", "dummy") + rclient.HSet(context.Background(), "LLDP_ENTRY_TABLE:eth0", "lldp_rem_sys_name", "dummy") // Sleep just one second to allow redis data to be entered time.Sleep(time.Millisecond * 1000) } @@ -925,9 +926,9 @@ func TestPollTableDeleted(t *testing.T) { ns, _ := sdcfg.GetDbDefaultNamespace() rclient := getRedisClientN(t, 0, ns) defer rclient.Close() - rclient.FlushDB() - rclient.HSet("LLDP_ENTRY_TABLE:eth0", "lldp_rem_port_id", "dummy") - rclient.HSet("LLDP_ENTRY_TABLE:eth0", "lldp_rem_sys_name", "dummy") + rclient.FlushDB(context.Background()) + rclient.HSet(context.Background(), "LLDP_ENTRY_TABLE:eth0", "lldp_rem_port_id", "dummy") + rclient.HSet(context.Background(), "LLDP_ENTRY_TABLE:eth0", "lldp_rem_sys_name", "dummy") var mutexGotNoti sync.Mutex @@ -969,7 +970,7 @@ func TestPollTableDeleted(t *testing.T) { for i := 0; i < tt.poll; i++ { if i == 2 { // After first 2 polls, del data - rclient.FlushDB() + rclient.FlushDB(context.Background()) // Sleep just one second to allow redis data to be deleted time.Sleep(time.Millisecond * 1000) } @@ -1039,8 +1040,8 @@ func TestPollTableFieldDeleted(t *testing.T) { ns, _ := sdcfg.GetDbDefaultNamespace() rclient := getRedisClientN(t, 0, ns) defer rclient.Close() - rclient.FlushDB() - rclient.HSet("LLDP_LOC_CHASSIS", "lldp_loc_sys_name", "dummy") + rclient.FlushDB(context.Background()) + rclient.HSet(context.Background(), "LLDP_LOC_CHASSIS", "lldp_loc_sys_name", "dummy") var mutexGotNoti sync.Mutex @@ -1082,7 +1083,7 @@ func TestPollTableFieldDeleted(t *testing.T) { for i := 0; i < tt.poll; i++ { if i == 2 { // After first 2 polls, del data - rclient.FlushDB() + rclient.FlushDB(context.Background()) // Sleep just one second to allow redis data to be deleted time.Sleep(time.Millisecond * 1000) } @@ -1160,9 +1161,9 @@ func TestPollTableKeyDeleted(t *testing.T) { ns, _ := sdcfg.GetDbDefaultNamespace() rclient := getRedisClientN(t, 0, ns) defer rclient.Close() - rclient.FlushDB() - rclient.HSet("ROUTE_TABLE:0.0.0.0/0", "ifname", "dummy") - rclient.HSet("ROUTE_TABLE:0.0.0.0/0", "nexthop", "dummy") + rclient.FlushDB(context.Background()) + rclient.HSet(context.Background(), "ROUTE_TABLE:0.0.0.0/0", "ifname", "dummy") + rclient.HSet(context.Background(), "ROUTE_TABLE:0.0.0.0/0", "nexthop", "dummy") var mutexGotNoti sync.Mutex @@ -1205,7 +1206,7 @@ func TestPollTableKeyDeleted(t *testing.T) { for i := 0; i < tt.poll; i++ { if i == 2 { // After first 2 polls, del data - rclient.FlushDB() + rclient.FlushDB(context.Background()) // Sleep just one second to allow redis data to be deleted time.Sleep(time.Millisecond * 1000) } @@ -1295,11 +1296,11 @@ func TestPollTableAndTableKeyBothDeleted(t *testing.T) { ns, _ := sdcfg.GetDbDefaultNamespace() rclient := getRedisClientN(t, 0, ns) defer rclient.Close() - rclient.FlushDB() - rclient.HSet("LLDP_ENTRY_TABLE:eth0", "lldp_rem_port_id", "dummy") - rclient.HSet("LLDP_ENTRY_TABLE:eth0", "lldp_rem_sys_name", "dummy") - rclient.HSet("ROUTE_TABLE:0.0.0.0/0", "ifname", "dummy") - rclient.HSet("ROUTE_TABLE:0.0.0.0/0", "nexthop", "dummy") + rclient.FlushDB(context.Background()) + rclient.HSet(context.Background(), "LLDP_ENTRY_TABLE:eth0", "lldp_rem_port_id", "dummy") + rclient.HSet(context.Background(), "LLDP_ENTRY_TABLE:eth0", "lldp_rem_sys_name", "dummy") + rclient.HSet(context.Background(), "ROUTE_TABLE:0.0.0.0/0", "ifname", "dummy") + rclient.HSet(context.Background(), "ROUTE_TABLE:0.0.0.0/0", "nexthop", "dummy") var mutexGotNoti sync.Mutex @@ -1342,7 +1343,7 @@ func TestPollTableAndTableKeyBothDeleted(t *testing.T) { for i := 0; i < tt.poll; i++ { if i == 2 { // After first 2 polls, delete data - rclient.FlushDB() + rclient.FlushDB(context.Background()) // Sleep just one second to allow redis data to be deleted time.Sleep(time.Millisecond * 1000) } @@ -1445,11 +1446,11 @@ func TestPollTableAndTableKeyTableDeleted(t *testing.T) { ns, _ := sdcfg.GetDbDefaultNamespace() rclient := getRedisClientN(t, 0, ns) defer rclient.Close() - rclient.FlushDB() - rclient.HSet("LLDP_ENTRY_TABLE:eth0", "lldp_rem_port_id", "dummy") - rclient.HSet("LLDP_ENTRY_TABLE:eth0", "lldp_rem_sys_name", "dummy") - rclient.HSet("ROUTE_TABLE:0.0.0.0/0", "ifname", "dummy") - rclient.HSet("ROUTE_TABLE:0.0.0.0/0", "nexthop", "dummy") + rclient.FlushDB(context.Background()) + rclient.HSet(context.Background(), "LLDP_ENTRY_TABLE:eth0", "lldp_rem_port_id", "dummy") + rclient.HSet(context.Background(), "LLDP_ENTRY_TABLE:eth0", "lldp_rem_sys_name", "dummy") + rclient.HSet(context.Background(), "ROUTE_TABLE:0.0.0.0/0", "ifname", "dummy") + rclient.HSet(context.Background(), "ROUTE_TABLE:0.0.0.0/0", "nexthop", "dummy") var mutexGotNoti sync.Mutex @@ -1492,7 +1493,7 @@ func TestPollTableAndTableKeyTableDeleted(t *testing.T) { for i := 0; i < tt.poll; i++ { if i == 2 { // After first 2 polls, delete data - rclient.Del("LLDP_ENTRY_TABLE:eth0") + rclient.Del(context.Background(), "LLDP_ENTRY_TABLE:eth0") // Sleep just one second to allow redis data to be deleted time.Sleep(time.Millisecond * 1000) } @@ -1595,11 +1596,11 @@ func TestPollTableAndTableKeyTableKeyDeleted(t *testing.T) { ns, _ := sdcfg.GetDbDefaultNamespace() rclient := getRedisClientN(t, 0, ns) defer rclient.Close() - rclient.FlushDB() - rclient.HSet("LLDP_ENTRY_TABLE:eth0", "lldp_rem_port_id", "dummy") - rclient.HSet("LLDP_ENTRY_TABLE:eth0", "lldp_rem_sys_name", "dummy") - rclient.HSet("ROUTE_TABLE:0.0.0.0/0", "ifname", "dummy") - rclient.HSet("ROUTE_TABLE:0.0.0.0/0", "nexthop", "dummy") + rclient.FlushDB(context.Background()) + rclient.HSet(context.Background(), "LLDP_ENTRY_TABLE:eth0", "lldp_rem_port_id", "dummy") + rclient.HSet(context.Background(), "LLDP_ENTRY_TABLE:eth0", "lldp_rem_sys_name", "dummy") + rclient.HSet(context.Background(), "ROUTE_TABLE:0.0.0.0/0", "ifname", "dummy") + rclient.HSet(context.Background(), "ROUTE_TABLE:0.0.0.0/0", "nexthop", "dummy") var mutexGotNoti sync.Mutex @@ -1642,7 +1643,7 @@ func TestPollTableAndTableKeyTableKeyDeleted(t *testing.T) { for i := 0; i < tt.poll; i++ { if i == 2 { // After first 2 polls, delete data - rclient.Del("ROUTE_TABLE:0.0.0.0/0") + rclient.Del(context.Background(), "ROUTE_TABLE:0.0.0.0/0") // Sleep just one second to allow redis data to be deleted time.Sleep(time.Millisecond * 1000) } diff --git a/gnmi_server/server.go b/gnmi_server/server.go index 4768d108d..945b516b2 100644 --- a/gnmi_server/server.go +++ b/gnmi_server/server.go @@ -2,6 +2,7 @@ package gnmi import ( "bytes" + "context" "errors" "fmt" "net" @@ -31,7 +32,6 @@ import ( gnoi_os_pb "github.com/openconfig/gnoi/os" gnoi_debug "github.com/sonic-net/sonic-gnmi/pkg/gnoi/debug" gnoi_debug_pb "github.com/sonic-net/sonic-gnmi/proto/gnoi/debug" - "golang.org/x/net/context" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/peer" diff --git a/gnmi_server/server_test.go b/gnmi_server/server_test.go index 958af485a..0bfc73c61 100644 --- a/gnmi_server/server_test.go +++ b/gnmi_server/server_test.go @@ -3,7 +3,10 @@ package gnmi // server_test covers gNMI get, subscribe (stream and poll) test // Prerequisite: redis-server should be running. import ( + "context" "crypto/tls" + "crypto/x509" + "crypto/x509/pkix" "encoding/json" "flag" "fmt" @@ -20,19 +23,17 @@ import ( "time" "unsafe" - "crypto/x509" - "crypto/x509/pkix" - + "github.com/sonic-net/sonic-gnmi/common_utils" spb "github.com/sonic-net/sonic-gnmi/proto" sgpb "github.com/sonic-net/sonic-gnmi/proto/gnoi" spb_jwt "github.com/sonic-net/sonic-gnmi/proto/gnoi/jwt" sdc "github.com/sonic-net/sonic-gnmi/sonic_data_client" sdcfg "github.com/sonic-net/sonic-gnmi/sonic_db_config" ssc "github.com/sonic-net/sonic-gnmi/sonic_service_client" + "github.com/sonic-net/sonic-gnmi/swsscommon" "github.com/sonic-net/sonic-gnmi/test_utils" testcert "github.com/sonic-net/sonic-gnmi/testdata/tls" - "github.com/go-redis/redis" "github.com/golang/protobuf/proto" "github.com/kylelemons/godebug/pretty" "github.com/openconfig/gnmi/client" @@ -40,8 +41,8 @@ import ( ext_pb "github.com/openconfig/gnmi/proto/gnmi_ext" "github.com/openconfig/gnmi/value" "github.com/openconfig/ygot/ygot" + "github.com/redis/go-redis/v9" - "golang.org/x/net/context" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/credentials" @@ -61,8 +62,6 @@ import ( gnoi_file_pb "github.com/openconfig/gnoi/file" gnoi_os_pb "github.com/openconfig/gnoi/os" gnoi_system_pb "github.com/openconfig/gnoi/system" - "github.com/sonic-net/sonic-gnmi/common_utils" - "github.com/sonic-net/sonic-gnmi/swsscommon" ) var clientTypes = []string{gclient.Type} @@ -87,7 +86,7 @@ func loadDB(t *testing.T, rclient *redis.Client, mpi map[string]interface{}) { for key, fv := range mpi { switch fv.(type) { case map[string]interface{}: - _, err := rclient.HMSet(key, fv.(map[string]interface{})).Result() + _, err := rclient.HMSet(context.Background(), key, fv.(map[string]interface{})).Result() if err != nil { t.Errorf("Invalid data for db: %v : %v %v", key, fv, err) } @@ -100,7 +99,7 @@ func loadDBNotStrict(t *testing.T, rclient *redis.Client, mpi map[string]interfa for key, fv := range mpi { switch fv.(type) { case map[string]interface{}: - rclient.HMSet(key, fv.(map[string]interface{})).Result() + rclient.HMSet(context.Background(), key, fv.(map[string]interface{})).Result() } } @@ -546,7 +545,7 @@ func getRedisClientN(t *testing.T, n int, namespace string) *redis.Client { DB: n, DialTimeout: 0, }) - _, err = rclient.Ping().Result() + _, err = rclient.Ping(context.Background()).Result() if err != nil { t.Fatalf("failed to connect to redis server %v", err) } @@ -569,7 +568,7 @@ func getRedisClient(t *testing.T, namespace string) *redis.Client { DB: db, DialTimeout: 0, }) - _, err = rclient.Ping().Result() + _, err = rclient.Ping(context.Background()).Result() if err != nil { t.Fatalf("failed to connect to redis server %v", err) } @@ -592,7 +591,7 @@ func getConfigDbClient(t *testing.T, namespace string) *redis.Client { DB: db, DialTimeout: 0, }) - _, err = rclient.Ping().Result() + _, err = rclient.Ping(context.Background()).Result() if err != nil { t.Fatalf("failed to connect to redis server %v", err) } @@ -603,7 +602,7 @@ func loadConfigDB(t *testing.T, rclient *redis.Client, mpi map[string]interface{ for key, fv := range mpi { switch fv.(type) { case map[string]interface{}: - _, err := rclient.HMSet(key, fv.(map[string]interface{})).Result() + _, err := rclient.HMSet(context.Background(), key, fv.(map[string]interface{})).Result() if err != nil { t.Errorf("Invalid data for db: %v : %v %v", key, fv, err) } @@ -616,7 +615,7 @@ func loadConfigDB(t *testing.T, rclient *redis.Client, mpi map[string]interface{ func initFullConfigDb(t *testing.T, namespace string) { rclient := getConfigDbClient(t, namespace) defer rclient.Close() - rclient.FlushDB() + rclient.FlushDB(context.Background()) fileName := "../testdata/CONFIG_DHCP_SERVER.txt" config, err := ioutil.ReadFile(fileName) @@ -630,7 +629,7 @@ func initFullConfigDb(t *testing.T, namespace string) { func initFullCountersDb(t *testing.T, namespace string) { rclient := getRedisClient(t, namespace) defer rclient.Close() - rclient.FlushDB() + rclient.FlushDB(context.Background()) fileName := "../testdata/COUNTERS_PORT_NAME_MAP.txt" countersPortNameMapByte, err := ioutil.ReadFile(fileName) @@ -825,7 +824,7 @@ func initFullCountersDb(t *testing.T, namespace string) { func prepareConfigDb(t *testing.T, namespace string) { rclient := getConfigDbClient(t, namespace) defer rclient.Close() - rclient.FlushDB() + rclient.FlushDB(context.Background()) fileName := "../testdata/COUNTERS_PORT_ALIAS_MAP.txt" countersPortAliasMapByte, err := ioutil.ReadFile(fileName) @@ -846,8 +845,8 @@ func prepareConfigDb(t *testing.T, namespace string) { func prepareStateDb(t *testing.T, namespace string) { rclient := getRedisClientN(t, 6, namespace) defer rclient.Close() - rclient.FlushDB() - rclient.HSet("SWITCH_CAPABILITY|switch", "test_field", "test_value") + rclient.FlushDB(context.Background()) + rclient.HSet(context.Background(), "SWITCH_CAPABILITY|switch", "test_field", "test_value") fileName := "../testdata/NEIGH_STATE_TABLE.txt" neighStateTableByte, err := ioutil.ReadFile(fileName) if err != nil { @@ -861,7 +860,7 @@ func prepareStateDb(t *testing.T, namespace string) { func prepareDb(t *testing.T, namespace string) { rclient := getRedisClient(t, namespace) defer rclient.Close() - rclient.FlushDB() + rclient.FlushDB(context.Background()) //Enable keysapce notification os.Setenv("PATH", "/usr/bin:/sbin:/bin:/usr/local/bin") cmd := exec.Command("redis-cli", "config", "set", "notify-keyspace-events", "KEA") @@ -1093,7 +1092,7 @@ func prepareDb(t *testing.T, namespace string) { func prepareDbTranslib(t *testing.T) { ns, _ := sdcfg.GetDbDefaultNamespace() rclient := getRedisClient(t, ns) - rclient.FlushDB() + rclient.FlushDB(context.Background()) rclient.Close() //Enable keysapce notification @@ -3761,9 +3760,9 @@ func runTestSubscribe(t *testing.T, namespace string) { for _, prepare := range tt.prepares { switch prepare.op { case "hdel": - rclient.HDel(prepare.tableName+prepare.delimitor+prepare.tableKey, prepare.field) + rclient.HDel(context.Background(), prepare.tableName+prepare.delimitor+prepare.tableKey, prepare.field) default: - rclient.HSet(prepare.tableName+prepare.delimitor+prepare.tableKey, prepare.field, prepare.value) + rclient.HSet(context.Background(), prepare.tableName+prepare.delimitor+prepare.tableKey, prepare.field, prepare.value) } } @@ -3818,11 +3817,11 @@ func runTestSubscribe(t *testing.T, namespace string) { for _, update := range tt.updates { switch update.op { case "hdel": - rclient.HDel(update.tableName+update.delimitor+update.tableKey, update.field) + rclient.HDel(context.Background(), update.tableName+update.delimitor+update.tableKey, update.field) case "intervaltick": // This is not a DB update but a request to trigger sample interval default: - rclient.HSet(update.tableName+update.delimitor+update.tableKey, update.field, update.value) + rclient.HSet(context.Background(), update.tableName+update.delimitor+update.tableKey, update.field, update.value) } time.Sleep(time.Millisecond * 1000) @@ -4521,7 +4520,7 @@ func TestTableKeyOnDeletion(t *testing.T) { paths := tt.paths mutexPaths.Unlock() - rclient.Del(paths...) + rclient.Del(context.Background(), paths...) time.Sleep(time.Millisecond * 1500) @@ -4945,7 +4944,7 @@ func TestConnectionDataSet(t *testing.T) { wg.Wait() - resultMap, err := rclient.HGetAll("TELEMETRY_CONNECTIONS").Result() + resultMap, err := rclient.HGetAll(context.Background(), "TELEMETRY_CONNECTIONS").Result() if resultMap == nil { t.Errorf("result Map is nil, expected non nil, err: %v", err) diff --git a/gnmi_server/transl_sub_test.go b/gnmi_server/transl_sub_test.go index 66095602c..44fdde9a9 100644 --- a/gnmi_server/transl_sub_test.go +++ b/gnmi_server/transl_sub_test.go @@ -1,6 +1,7 @@ package gnmi import ( + "context" "crypto/tls" "fmt" "io" @@ -21,7 +22,6 @@ import ( spb "github.com/sonic-net/sonic-gnmi/proto" spb_gnoi "github.com/sonic-net/sonic-gnmi/proto/gnoi" dbconfig "github.com/sonic-net/sonic-gnmi/sonic_db_config" - "golang.org/x/net/context" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) @@ -901,7 +901,7 @@ func updateDb(t *testing.T, data DbDataMap) { defer redis.Close() for key, fields := range tableData { if fields == nil { - redis.Del(key) + redis.Del(context.Background(), key) continue } @@ -916,10 +916,10 @@ func updateDb(t *testing.T, data DbDataMap) { } if len(modFields) != 0 { - redis.HMSet(key, modFields) + redis.HMSet(context.Background(), key, modFields) } if len(delFields) != 0 { - redis.HDel(key, delFields...) + redis.HDel(context.Background(), key, delFields...) } } } diff --git a/go.mod b/go.mod index 314290ebe..4f9aa473d 100644 --- a/go.mod +++ b/go.mod @@ -1,15 +1,15 @@ module github.com/sonic-net/sonic-gnmi -go 1.21 +go 1.19 require ( github.com/Azure/sonic-mgmt-common v0.0.0-00010101000000-000000000000 github.com/Workiva/go-datastructures v1.0.50 github.com/agiledragon/gomonkey/v2 v2.8.0 + github.com/alicebob/miniredis/v2 v2.35.0 github.com/c9s/goprocinfo v0.0.0-20191125144613-4acdd056c72d github.com/dgrijalva/jwt-go v3.2.1-0.20210802184156-9742bd7fca1c+incompatible github.com/fsnotify/fsnotify v1.4.7 - github.com/go-redis/redis v6.15.6+incompatible github.com/godbus/dbus/v5 v5.1.0 github.com/gogo/protobuf v1.3.2 github.com/golang/glog v1.2.0 @@ -18,10 +18,12 @@ require ( github.com/google/gnxi v0.0.0-20181220173256-89f51f0ce1e2 github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 github.com/kylelemons/godebug v1.1.0 + github.com/maruel/natural v1.1.1 github.com/msteinert/pam v0.0.0-20201130170657-e61372126161 github.com/openconfig/gnmi v0.0.0-20200617225440-d2b4e6a45802 github.com/openconfig/gnoi v0.3.0 github.com/openconfig/ygot v0.7.1 + github.com/redis/go-redis/v9 v9.14.1 github.com/stretchr/testify v1.9.0 golang.org/x/crypto v0.24.0 golang.org/x/net v0.26.0 @@ -29,20 +31,22 @@ require ( google.golang.org/grpc/security/advancedtls v1.0.0 google.golang.org/protobuf v1.34.1 gopkg.in/yaml.v2 v2.2.8 + gopkg.in/yaml.v3 v3.0.1 + mvdan.cc/sh/v3 v3.8.0 ) require ( - github.com/alicebob/miniredis/v2 v2.35.0 // indirect github.com/antchfx/jsonquery v1.1.4 // indirect github.com/antchfx/xmlquery v1.3.1 // indirect github.com/antchfx/xpath v1.1.10 // indirect github.com/bgentry/speakeasy v0.1.0 // indirect github.com/cenkalti/backoff/v4 v4.0.0 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect + github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/go-redis/redis/v7 v7.0.0-beta.3.0.20190824101152-d19aba07b476 // indirect github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e // indirect github.com/google/go-cmp v0.6.0 // indirect - github.com/maruel/natural v1.1.1 // indirect github.com/onsi/ginkgo v1.10.3 // indirect github.com/onsi/gomega v1.7.1 // indirect github.com/openconfig/goyang v0.0.0-20200309174518-a00bece872fc // indirect @@ -54,9 +58,7 @@ require ( golang.org/x/sys v0.26.0 // indirect golang.org/x/text v0.16.0 // indirect google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect inet.af/netaddr v0.0.0-20230525184311-b8eac61e914a // indirect - mvdan.cc/sh/v3 v3.8.0 // indirect ) replace ( diff --git a/go.sum b/go.sum index 2a76cf61e..df8d8d076 100644 --- a/go.sum +++ b/go.sum @@ -625,6 +625,10 @@ github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs= +github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c= +github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA= +github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0= github.com/c9s/goprocinfo v0.0.0-20191125144613-4acdd056c72d h1:MQGrhPHSxg08x+LKgQTOnnjfXt+p+128WCECqAYXJsU= github.com/c9s/goprocinfo v0.0.0-20191125144613-4acdd056c72d/go.mod h1:uEyr4WpAH4hio6LFriaPkL938XnrvLpNPmQHBdrmbIE= github.com/cenkalti/backoff/v4 v4.0.0 h1:6VeaLF9aI+MAUQ95106HwWzYZgJJpZ4stumjj6RFYAU= @@ -635,6 +639,8 @@ github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91 github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= @@ -658,6 +664,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgrijalva/jwt-go v3.2.1-0.20210802184156-9742bd7fca1c+incompatible h1:kFnl8B5YgOXou7f+dsklKcGSXph/nubNx7I6d6RoFuE= github.com/dgrijalva/jwt-go v3.2.1-0.20210802184156-9742bd7fca1c+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dvyukov/go-fuzz v0.0.0-20210103155950-6a8e9d1f2415/go.mod h1:11Gm+ccJnvAhCNLlf5+cS9KjtbaD5I5zaZpFMsTHWTw= @@ -678,6 +686,8 @@ github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0+ github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -693,8 +703,6 @@ github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2C github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= -github.com/go-redis/redis v6.15.6+incompatible h1:H9evprGPLI8+ci7fxQx6WNZHJSb7be8FqJQRhdQZ5Sg= -github.com/go-redis/redis v6.15.6+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= github.com/go-redis/redis/v7 v7.0.0-beta.3.0.20190824101152-d19aba07b476 h1:WNSiFp8Ww4ZP7XUzW56zDYv5roKQ4VfsdHCLoh8oDj4= github.com/go-redis/redis/v7 v7.0.0-beta.3.0.20190824101152-d19aba07b476/go.mod h1:xhhSbUMTsleRPur+Vgx9sUHtyN33bdjxY+9/0n9Ig8s= github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= @@ -833,8 +841,9 @@ github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa02 github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -887,13 +896,15 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= +github.com/redis/go-redis/v9 v9.14.1 h1:nDCrEiJmfOWhD76xlaw+HXT0c9hfNWeXgl0vIRYSDvQ= +github.com/redis/go-redis/v9 v9.14.1/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= diff --git a/pkg/interceptors/dpuproxy/redis.go b/pkg/interceptors/dpuproxy/redis.go index b482c42a0..f6e86688b 100644 --- a/pkg/interceptors/dpuproxy/redis.go +++ b/pkg/interceptors/dpuproxy/redis.go @@ -3,7 +3,7 @@ package dpuproxy import ( "context" - "github.com/go-redis/redis" + "github.com/redis/go-redis/v9" ) // RedisClient defines the interface for Redis operations needed by DPU resolver. @@ -25,7 +25,7 @@ func NewGoRedisAdapter(client *redis.Client) *GoRedisAdapter { // HGetAll implements RedisClient interface. func (a *GoRedisAdapter) HGetAll(ctx context.Context, key string) (map[string]string, error) { - return a.client.HGetAll(key).Result() + return a.client.HGetAll(ctx, key).Result() } // NewRedisClient creates a new Redis client connected to SONiC's Redis instance. diff --git a/pkg/interceptors/dpuproxy/resolver_integration_test.go b/pkg/interceptors/dpuproxy/resolver_integration_test.go index 13a114fdf..89cff8921 100644 --- a/pkg/interceptors/dpuproxy/resolver_integration_test.go +++ b/pkg/interceptors/dpuproxy/resolver_integration_test.go @@ -5,7 +5,7 @@ import ( "testing" "github.com/alicebob/miniredis/v2" - "github.com/go-redis/redis" + "github.com/redis/go-redis/v9" ) func TestDPUResolver_Integration_RealRedis(t *testing.T) { diff --git a/show_client/system_health_cli.go b/show_client/system_health_cli.go index 763f80ac3..427fbadc4 100644 --- a/show_client/system_health_cli.go +++ b/show_client/system_health_cli.go @@ -6,8 +6,9 @@ import ( "sort" "strings" - log "github.com/golang/glog" sdc "github.com/sonic-net/sonic-gnmi/sonic_data_client" + + log "github.com/golang/glog" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) diff --git a/sonic_data_client/db_client.go b/sonic_data_client/db_client.go index 975e27d3a..9a063c0da 100644 --- a/sonic_data_client/db_client.go +++ b/sonic_data_client/db_client.go @@ -3,6 +3,7 @@ package client import ( "bytes" + "context" "encoding/json" "fmt" "net" @@ -12,13 +13,13 @@ import ( "sync" "time" - log "github.com/golang/glog" + spb "github.com/sonic-net/sonic-gnmi/proto" + sdcfg "github.com/sonic-net/sonic-gnmi/sonic_db_config" "github.com/Workiva/go-datastructures/queue" - "github.com/go-redis/redis" + log "github.com/golang/glog" gnmipb "github.com/openconfig/gnmi/proto/gnmi" - spb "github.com/sonic-net/sonic-gnmi/proto" - sdcfg "github.com/sonic-net/sonic-gnmi/sonic_db_config" + "github.com/redis/go-redis/v9" ) const ( @@ -750,7 +751,7 @@ func populateDbtablePath(prefix, path *gnmipb.Path, pathG2S *map[*gnmipb.Path][] case 2: // only table name provided wildcardTableName := tblPath.tableName + "*" log.V(6).Infof("Fetching all keys for %v with table name %s", target, wildcardTableName) - res, err := redisDb.Keys(wildcardTableName).Result() + res, err := redisDb.Keys(context.Background(), wildcardTableName).Result() if err != nil { return fmt.Errorf("redis Keys op failed for %v %v, got err %v %v", target, dbPath, err, res) } @@ -758,14 +759,14 @@ func populateDbtablePath(prefix, path *gnmipb.Path, pathG2S *map[*gnmipb.Path][] tblPath.tableKey = "" case 3: // Third element could be table key; or field name in which case table name itself is the key too if targetDbName == "APPL_DB" { - keyExists, err := redisDb.Exists(tblPath.tableName + tblPath.delimitor + mappedKey).Result() + keyExists, err := redisDb.Exists(context.Background(), tblPath.tableName+tblPath.delimitor+mappedKey).Result() if err != nil { return fmt.Errorf("redis Exists op failed for %v", dbPath) } if keyExists == 1 { // Existing Table:Key tblPath.tableKey = mappedKey } else { - fieldExists, err := redisDb.HExists(tblPath.tableName, mappedKey).Result() + fieldExists, err := redisDb.HExists(context.Background(), tblPath.tableName, mappedKey).Result() if err != nil { return fmt.Errorf("redis HExists op failed for %v", dbPath) } @@ -776,7 +777,7 @@ func populateDbtablePath(prefix, path *gnmipb.Path, pathG2S *map[*gnmipb.Path][] } } } else { - n, err := redisDb.Exists(tblPath.tableName + tblPath.delimitor + mappedKey).Result() + n, err := redisDb.Exists(context.Background(), tblPath.tableName+tblPath.delimitor+mappedKey).Result() if err != nil { return fmt.Errorf("redis Exists op failed for %v", dbPath) } @@ -790,7 +791,7 @@ func populateDbtablePath(prefix, path *gnmipb.Path, pathG2S *map[*gnmipb.Path][] tblPath.tableKey = mappedKey + tblPath.delimitor + stringSlice[3] // verify whether this key exists key := tblPath.tableName + tblPath.delimitor + tblPath.tableKey - n, err := redisDb.Exists(key).Result() + n, err := redisDb.Exists(context.Background(), key).Result() if err != nil { return fmt.Errorf("redis Exists op failed for %v", dbPath) } @@ -810,7 +811,7 @@ func populateDbtablePath(prefix, path *gnmipb.Path, pathG2S *map[*gnmipb.Path][] var key string if tblPath.tableKey != "" { key = tblPath.tableName + tblPath.delimitor + tblPath.tableKey - n, _ := redisDb.Exists(key).Result() + n, _ := redisDb.Exists(context.Background(), key).Result() if n != 1 { log.V(2).Infof("No valid entry found on %v with key %v", dbPath, key) return fmt.Errorf("No valid entry found on %v with key %v", dbPath, key) @@ -888,7 +889,7 @@ func TableData2Msi(tblPath *tablePath, useKey bool, op *string, msi *map[string] } else { pattern = tblPath.tableName + tblPath.delimitor + "*" } - dbkeys, err = redisDb.Keys(pattern).Result() + dbkeys, err = redisDb.Keys(context.Background(), pattern).Result() if err != nil { log.V(2).Infof("redis Keys failed for %v, pattern %s", tblPath, pattern) return fmt.Errorf("redis Keys failed for %v, pattern %s %v", tblPath, pattern, err) @@ -902,7 +903,7 @@ func TableData2Msi(tblPath *tablePath, useKey bool, op *string, msi *map[string] // Asked to use jsonField and jsonTableKey in the final json value if tblPath.jsonField != "" && tblPath.jsonTableKey != "" { - val, err := redisDb.HGet(dbkeys[0], tblPath.field).Result() + val, err := redisDb.HGet(context.Background(), dbkeys[0], tblPath.field).Result() log.V(4).Infof("Data pulled for key %s and field %s: %s", dbkeys[0], tblPath.field, val) if err != nil { log.V(3).Infof("redis HGet failed for %v %v", tblPath, err) @@ -916,7 +917,7 @@ func TableData2Msi(tblPath *tablePath, useKey bool, op *string, msi *map[string] } for idx, dbkey := range dbkeys { - fv, err = redisDb.HGetAll(dbkey).Result() + fv, err = redisDb.HGetAll(context.Background(), dbkey).Result() if err != nil { log.V(2).Infof("redis HGetAll failed for %v, dbkey %s", tblPath, dbkey) return err @@ -957,7 +958,7 @@ func AppDBTableData2Msi(tblPath *tablePath, useKey bool, op *string, msi *map[st if tblPath.tableKey == "" { // tables in COUNTERS_DB other than COUNTERS table doesn't have keys pattern = tblPath.tableName + tblPath.delimitor + "*" - dbkeys, err = redisDb.Keys(pattern).Result() + dbkeys, err = redisDb.Keys(context.Background(), pattern).Result() if err != nil { log.V(2).Infof("redis Keys failed for %v, pattern %s", tblPath, pattern) return fmt.Errorf("redis Keys failed for %v, pattern %s %v", tblPath, pattern, err) @@ -970,7 +971,7 @@ func AppDBTableData2Msi(tblPath *tablePath, useKey bool, op *string, msi *map[st log.V(4).Infof("dbkeys to be pulled from redis %v", dbkeys) for idx, dbkey := range dbkeys { - fv, err = redisDb.HGetAll(dbkey).Result() + fv, err = redisDb.HGetAll(context.Background(), dbkey).Result() if err != nil { log.V(2).Infof("redis HGetAll failed for %v, dbkey %s", tblPath, dbkey) return err @@ -1038,7 +1039,7 @@ func tableData2TypedValue(tblPaths []tablePath, op *string) (*gnmipb.TypedValue, key = tblPath.tableName } - val, err := redisDb.HGet(key, tblPath.field).Result() + val, err := redisDb.HGet(context.Background(), key, tblPath.field).Result() if err != nil { log.V(2).Infof("redis HGet failed for %v", tblPath) return nil, err @@ -1080,7 +1081,7 @@ func AppDBTableData2TypedValue(tblPaths []tablePath, op *string) (*gnmipb.TypedV key = tblPath.tableName } - val, err := redisDb.HGet(key, tblPath.field).Result() + val, err := redisDb.HGet(context.Background(), key, tblPath.field).Result() if err != nil { log.V(2).Infof("redis HGet failed for %v, data does not exist", tblPath) continue @@ -1149,7 +1150,7 @@ func dbFieldMultiSubscribe(c *DbClient, gnmiPath *gnmipb.Path, onChange bool, in } // run redis get directly for field value redisDb := Target2RedisDb[tblPath.dbNamespace][tblPath.dbName] - val, err := redisDb.HGet(key, tblPath.field).Result() + val, err := redisDb.HGet(context.Background(), key, tblPath.field).Result() if err == redis.Nil { if tblPath.jsonField != "" { // ignore non-existing field which was derived from virtual path @@ -1246,7 +1247,7 @@ func dbFieldSubscribe(c *DbClient, gnmiPath *gnmipb.Path, onChange bool, interva } readVal := func() string { - newVal, err := redisDb.HGet(key, tblPath.field).Result() + newVal, err := redisDb.HGet(context.Background(), key, tblPath.field).Result() if err == redis.Nil { log.V(2).Infof("%v doesn't exist with key %v in db", tblPath.field, key) newVal = "" @@ -1327,7 +1328,7 @@ func dbSingleTableKeySubscribe(c *DbClient, rsd redisSubData, updateChannel chan for { select { default: - msgi, err := pubsub.ReceiveTimeout(time.Millisecond * 500) + msgi, err := pubsub.ReceiveTimeout(context.Background(), time.Millisecond*500) if err != nil { neterr, ok := err.(net.Error) if ok { @@ -1468,10 +1469,10 @@ func dbTableKeySubscribe(c *DbClient, gnmiPath *gnmipb.Path, interval time.Durat pattern += "*" } redisDb := Target2RedisDb[tblPath.dbNamespace][tblPath.dbName] - pubsub := redisDb.PSubscribe(pattern) + pubsub := redisDb.PSubscribe(context.Background(), pattern) defer pubsub.Close() - msgi, err := pubsub.ReceiveTimeout(time.Second) + msgi, err := pubsub.ReceiveTimeout(context.Background(), time.Second) if err != nil { handleFatalMsg(fmt.Sprintf("psubscribe to %s failed for %v", pattern, tblPath)) return diff --git a/sonic_data_client/events_client.go b/sonic_data_client/events_client.go index a8c6b03d5..76dae701f 100644 --- a/sonic_data_client/events_client.go +++ b/sonic_data_client/events_client.go @@ -11,6 +11,7 @@ package client import "C" import ( + "context" "encoding/json" "fmt" "reflect" @@ -20,13 +21,13 @@ import ( "time" "unsafe" - "github.com/go-redis/redis" + spb "github.com/sonic-net/sonic-gnmi/proto" + sdcfg "github.com/sonic-net/sonic-gnmi/sonic_db_config" "github.com/Workiva/go-datastructures/queue" log "github.com/golang/glog" gnmipb "github.com/openconfig/gnmi/proto/gnmi" - spb "github.com/sonic-net/sonic-gnmi/proto" - sdcfg "github.com/sonic-net/sonic-gnmi/sonic_db_config" + "github.com/redis/go-redis/v9" ) const SUBSCRIBER_TIMEOUT = (2 * 1000) // 2 seconds @@ -245,7 +246,7 @@ func update_stats(evtc *EventClient) { // Init current values for cumulative keys and clear for absolute for _, key := range STATS_CUMULATIVE_KEYS { - fv, err := rclient.HGetAll(key).Result() + fv, err := rclient.HGetAll(context.Background(), key).Result() if err != nil { number, errC := strconv.ParseUint(fv[STATS_FIELD_NAME], 10, 64) if errC == nil { @@ -278,10 +279,8 @@ func update_stats(evtc *EventClient) { if (wr_counters == nil) || !reflect.DeepEqual(tmp_counters, *wr_counters) { for key, val := range tmp_counters { sval := strconv.FormatUint(val, 10) - ret, err := rclient.HSet(key, STATS_FIELD_NAME, sval).Result() - if !ret { - log.V(3).Infof("EventClient failed to update COUNTERS key:%s val:%v err:%v", - key, sval, err) + if _, err := rclient.HSet(context.Background(), key, STATS_FIELD_NAME, sval).Result(); err != nil { + log.V(3).Infof("EventClient failed to update COUNTERS key:%s val:%v err:%v", key, sval, err) } } wr_counters = &tmp_counters diff --git a/sonic_data_client/mixed_db_client.go b/sonic_data_client/mixed_db_client.go index c9367926f..8a986b4a3 100644 --- a/sonic_data_client/mixed_db_client.go +++ b/sonic_data_client/mixed_db_client.go @@ -6,6 +6,7 @@ import "C" import ( "bytes" + "context" "encoding/json" "fmt" "io/ioutil" @@ -18,15 +19,16 @@ import ( "time" "unsafe" - "github.com/Workiva/go-datastructures/queue" - "github.com/go-redis/redis" - log "github.com/golang/glog" - gnmipb "github.com/openconfig/gnmi/proto/gnmi" "github.com/sonic-net/sonic-gnmi/common_utils" spb "github.com/sonic-net/sonic-gnmi/proto" sdcfg "github.com/sonic-net/sonic-gnmi/sonic_db_config" ssc "github.com/sonic-net/sonic-gnmi/sonic_service_client" "github.com/sonic-net/sonic-gnmi/swsscommon" + + "github.com/Workiva/go-datastructures/queue" + log "github.com/golang/glog" + gnmipb "github.com/openconfig/gnmi/proto/gnmi" + "github.com/redis/go-redis/v9" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) @@ -690,7 +692,7 @@ func (c *MixedDbClient) getDbtablePath(path *gnmipb.Path, value *gnmipb.TypedVal case 1: // only db name provided case 2: // only table name provided if tblPath.operation == opRemove { - res, err := redisDb.Keys(tblPath.tableName + "*").Result() + res, err := redisDb.Keys(context.Background(), tblPath.tableName+"*").Result() if err != nil || len(res) < 1 { log.V(2).Infof("Invalid db table Path %v %v", c.target, dbPath) return nil, fmt.Errorf("Failed to find %v %v %v %v", c.target, dbPath, err, res) @@ -699,7 +701,7 @@ func (c *MixedDbClient) getDbtablePath(path *gnmipb.Path, value *gnmipb.TypedVal tblPath.tableKey = "" case 3: // Third element must be table key if tblPath.operation == opRemove { - _, err := redisDb.Exists(tblPath.tableName + tblPath.delimitor + mappedKey).Result() + _, err := redisDb.Exists(context.Background(), tblPath.tableName+tblPath.delimitor+mappedKey).Result() if err != nil { return nil, fmt.Errorf("redis Exists op failed for %v", dbPath) } @@ -707,7 +709,7 @@ func (c *MixedDbClient) getDbtablePath(path *gnmipb.Path, value *gnmipb.TypedVal tblPath.tableKey = mappedKey case 4: // Fourth element must be field name if tblPath.operation == opRemove { - _, err := redisDb.Exists(tblPath.tableName + tblPath.delimitor + mappedKey).Result() + _, err := redisDb.Exists(context.Background(), tblPath.tableName+tblPath.delimitor+mappedKey).Result() if err != nil { return nil, fmt.Errorf("redis Exists op failed for %v", dbPath) } @@ -716,7 +718,7 @@ func (c *MixedDbClient) getDbtablePath(path *gnmipb.Path, value *gnmipb.TypedVal tblPath.field = stringSlice[3] case 5: // Fifth element must be list index if tblPath.operation == opRemove { - _, err := redisDb.Exists(tblPath.tableName + tblPath.delimitor + mappedKey).Result() + _, err := redisDb.Exists(context.Background(), tblPath.tableName+tblPath.delimitor+mappedKey).Result() if err != nil { return nil, fmt.Errorf("redis Exists op failed for %v", dbPath) } @@ -809,7 +811,7 @@ func (c *MixedDbClient) tableData2Msi(tblPath *tablePath, useKey bool, op *strin return fmt.Errorf("Can not read all tables in COUNTERS_DB") } pattern = "*" + tblPath.delimitor + "*" - dbkeys, err = redisDb.Keys(pattern).Result() + dbkeys, err = redisDb.Keys(context.Background(), pattern).Result() if err != nil { log.V(2).Infof("redis Keys failed for %v, pattern %s", tblPath, pattern) return fmt.Errorf("redis Keys failed for %v, pattern %s %v", tblPath, pattern, err) @@ -822,7 +824,7 @@ func (c *MixedDbClient) tableData2Msi(tblPath *tablePath, useKey bool, op *strin } else { pattern = tblPath.tableName + tblPath.delimitor + "*" } - dbkeys, err = redisDb.Keys(pattern).Result() + dbkeys, err = redisDb.Keys(context.Background(), pattern).Result() if err != nil { log.V(2).Infof("redis Keys failed for %v, pattern %s", tblPath, pattern) return fmt.Errorf("redis Keys failed for %v, pattern %s %v", tblPath, pattern, err) @@ -833,7 +835,7 @@ func (c *MixedDbClient) tableData2Msi(tblPath *tablePath, useKey bool, op *strin } for idx, dbkey := range dbkeys { - fv, err = redisDb.HGetAll(dbkey).Result() + fv, err = redisDb.HGetAll(context.Background(), dbkey).Result() if err != nil { log.V(2).Infof("redis HGetAll failed for %v, dbkey %s", tblPath, dbkey) return err @@ -938,7 +940,7 @@ func (c *MixedDbClient) tableData2TypedValue(tblPaths []tablePath, op *string) ( // TODO: Use Yang model to identify leaf-list if tblPath.index >= 0 { field := tblPath.field + "@" - val, err := redisDb.HGet(key, field).Result() + val, err := redisDb.HGet(context.Background(), key, field).Result() if err != nil { log.V(2).Infof("redis HGet failed for %v", tblPath) return nil, err @@ -953,7 +955,7 @@ func (c *MixedDbClient) tableData2TypedValue(tblPaths []tablePath, op *string) ( }}, nil } else { field := tblPath.field - val, err := redisDb.HGet(key, field).Result() + val, err := redisDb.HGet(context.Background(), key, field).Result() if err == nil { return &gnmipb.TypedValue{ Value: &gnmipb.TypedValue_JsonIetfVal{ @@ -961,7 +963,7 @@ func (c *MixedDbClient) tableData2TypedValue(tblPaths []tablePath, op *string) ( }}, nil } field = field + "@" - val, err = redisDb.HGet(key, field).Result() + val, err = redisDb.HGet(context.Background(), key, field).Result() if err == nil { var output []byte slice := strings.Split(val, ",") @@ -1045,7 +1047,7 @@ func (c *MixedDbClient) handleTableData(tblPaths []tablePath) error { pattern = tblPath.tableName + tblPath.delimitor + "*" } // Can't remove entry in temporary state table - dbkeys, err = redisDb.Keys(pattern).Result() + dbkeys, err = redisDb.Keys(context.Background(), pattern).Result() if err != nil { log.V(2).Infof("redis Keys failed for %v, pattern %s", tblPath, pattern) return fmt.Errorf("redis Keys failed for %v, pattern %s %v", tblPath, pattern, err) @@ -1786,7 +1788,7 @@ func (c *MixedDbClient) dbFieldSubscribe(gnmiPath *gnmipb.Path, onChange bool, i } readVal := func() string { - newVal, err := redisDb.HGet(key, tblPath.field).Result() + newVal, err := redisDb.HGet(context.Background(), key, tblPath.field).Result() if err == redis.Nil { log.V(2).Infof("%v doesn't exist with key %v in db", tblPath.field, key) newVal = "" @@ -1861,7 +1863,7 @@ func (c *MixedDbClient) dbSingleTableKeySubscribe(rsd redisSubData, updateChanne for { select { default: - msgi, err := pubsub.ReceiveTimeout(time.Millisecond * 500) + msgi, err := pubsub.ReceiveTimeout(context.Background(), time.Millisecond*500) if err != nil { neterr, ok := err.(net.Error) if ok { @@ -2020,10 +2022,10 @@ func (c *MixedDbClient) dbTableKeySubscribe(gnmiPath *gnmipb.Path, interval time handleFatalMsg(fmt.Sprintf("RedisDbMap not exist: %v", c.mapkey+":"+tblPath.dbName)) return } - pubsub := redisDb.PSubscribe(pattern) + pubsub := redisDb.PSubscribe(context.Background(), pattern) defer pubsub.Close() - msgi, err := pubsub.ReceiveTimeout(time.Second) + msgi, err := pubsub.ReceiveTimeout(context.Background(), time.Second) if err != nil { handleFatalMsg(fmt.Sprintf("psubscribe to %s failed for %v", pattern, tblPath)) return diff --git a/sonic_data_client/virtual_db.go b/sonic_data_client/virtual_db.go index 9b326b77f..325db41c1 100644 --- a/sonic_data_client/virtual_db.go +++ b/sonic_data_client/virtual_db.go @@ -1,12 +1,14 @@ package client import ( + "context" "fmt" "os" "strings" - log "github.com/golang/glog" sdcfg "github.com/sonic-net/sonic-gnmi/sonic_db_config" + + log "github.com/golang/glog" ) // virtual db is to Handle @@ -245,14 +247,14 @@ func GetPfcwdMap() (map[string]map[string]string, error) { } for namespace, redisDb := range redis_client_map { separator, _ := GetTableKeySeparator(dbName, namespace) - _, err := redisDb.Ping().Result() + _, err := redisDb.Ping(context.Background()).Result() if err != nil { log.V(1).Infof("Can not connect to %v in namsespace %v, err: %v", dbName, namespace, err) return nil, err } keyName := fmt.Sprintf("%s%v*", pfcwdTableName, separator) - resp, err := redisDb.Keys(keyName).Result() + resp, err := redisDb.Keys(context.Background(), keyName).Result() if err != nil { log.V(1).Infof("redis get keys failed for %v in namsepace %v, key = %v, err: %v", dbName, namespace, keyName, err) return nil, err @@ -274,7 +276,7 @@ func GetPfcwdMap() (map[string]map[string]string, error) { // Get Queue indexes that are enabled with PFC-WD keyName = "PORT_QOS_MAP*" - resp, err = redisDb.Keys(keyName).Result() + resp, err = redisDb.Keys(context.Background(), keyName).Result() if err != nil { log.V(1).Infof("redis get keys failed for %v in namespace %v, key = %v, err: %v", dbName, namespace, keyName, err) return nil, err @@ -294,14 +296,14 @@ func GetPfcwdMap() (map[string]map[string]string, error) { } fieldName := "pfc_enable" - priorities, err := redisDb.HGet(qos_key, fieldName).Result() + priorities, err := redisDb.HGet(context.Background(), qos_key, fieldName).Result() if err != nil { log.V(1).Infof("redis get field failed for %v in namsepace %v, key = %v, field = %v, err: %v", dbName, namespace, qos_key, fieldName, err) return nil, err } keyName = fmt.Sprintf("MAP_PFC_PRIORITY_TO_QUEUE%vAZURE", separator) - pfc_queue_map, err := redisDb.HGetAll(keyName).Result() + pfc_queue_map, err := redisDb.HGetAll(context.Background(), keyName).Result() if err != nil { log.V(1).Infof("redis get fields failed for %v in namsepace %v, key = %v, err: %v", dbName, namespace, keyName, err) return nil, err @@ -353,20 +355,20 @@ func getAliasMap() (map[string]string, map[string]string, map[string]string, err } for namespace, redisDb := range redis_client_map { separator, _ := GetTableKeySeparator(dbName, namespace) - _, err := redisDb.Ping().Result() + _, err := redisDb.Ping(context.Background()).Result() if err != nil { log.V(1).Infof("Can not connect to %v, in namsepace %v, err: %v", dbName, namespace, err) return nil, nil, nil, err } keyName := fmt.Sprintf("PORT%v*", separator) - resp, err := redisDb.Keys(keyName).Result() + resp, err := redisDb.Keys(context.Background(), keyName).Result() if err != nil { log.V(1).Infof("redis get keys failed for %v in namsepace %v, key = %v, err: %v", dbName, namespace, keyName, err) return nil, nil, nil, err } for _, key := range resp { - alias, err := redisDb.HGet(key, "alias").Result() + alias, err := redisDb.HGet(context.Background(), key, "alias").Result() if err != nil { log.V(1).Infof("redis get field alias failed for %v in namsepace %v, key = %v, err: %v", dbName, namespace, key, err) // redis get alias failed so return nil for maps and the error @@ -400,7 +402,7 @@ func getCountersMap(tableName string) (map[string]string, error) { return nil, err } for namespace, redisDb := range redis_client_map { - fv, err := redisDb.HGetAll(tableName).Result() + fv, err := redisDb.HGetAll(context.Background(), tableName).Result() if err != nil { log.V(2).Infof("redis HGetAll failed for COUNTERS_DB in namespace %v, tableName: %s", namespace, tableName) return nil, err @@ -421,7 +423,7 @@ func getFabricCountersMap(tableName string) (map[string]string, error) { return nil, err } for namespace, redisDb := range redis_client_map { - fv, err := redisDb.HGetAll(tableName).Result() + fv, err := redisDb.HGetAll(context.Background(), tableName).Result() if err != nil { log.V(2).Infof("redis HGetAll failed for COUNTERS_DB in namespace %v, tableName: %s", namespace, tableName) return nil, err @@ -503,7 +505,7 @@ func getSwitchStatMap(tableName string) (map[string]string, error) { return nil, err } for namespace, redisDb := range redis_client_map { - fv, err := redisDb.HGetAll(tableName).Result() + fv, err := redisDb.HGetAll(context.Background(), tableName).Result() if err != nil { log.V(2).Infof("redis HGetAll failed for COUNTERS_DB in namespace %v, tableName: %s", namespace, tableName) return nil, err diff --git a/testdata/crl/039bd53b.r0 b/testdata/crl/039bd53b.r0 new file mode 100644 index 000000000..07dfa4999 --- /dev/null +++ b/testdata/crl/039bd53b.r0 @@ -0,0 +1,10 @@ +-----BEGIN X509 CRL----- +MIIBXzCCARECAQEwBQYDK2VwMIGxMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2Fs +aWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzETMBEGA1UEChMKR29vZ2xl +IExMQzEmMBEGA1UECxMKUHJvZHVjdGlvbjARBgNVBAsTCmNhbXB1cy1scHAxODA2 +BgNVBAMML2dwaW5zIENBIHswYzE3Y2Y2OC04YTZlLTRjNTAtYjU1MS04ODk0NmM0 +YWMxODl9GA8wMDAwMDEwMTAwMDAwMFoYDzk5OTkxMjMxMjM1OTU5WqAvMC0wHwYD +VR0jBBgwFoAU2pqzmmzw+7YFhTzME3DRecOCAvAwCgYDVR0UBAMCAQAwBQYDK2Vw +A0EAV0nBCRhjQE3O59rP0hDDC6KsFCfU22eSXEauctRVUTNMIXOfv7qkaaiTsi51 +drbGf8ieaSgxlSx1cpv6nNQsDw== +-----END X509 CRL----- diff --git a/testdata/crl/ca.pem b/testdata/crl/ca.pem new file mode 100644 index 000000000..74d2f6ce1 --- /dev/null +++ b/testdata/crl/ca.pem @@ -0,0 +1,29 @@ +-----BEGIN CERTIFICATE----- +MIIE+TCCAuGgAwIBAgIUKYYC0fdv3zaHtZN/VHWA7PKCVFUwDQYJKoZIhvcNAQEL +BQAwEzERMA8GA1UEAwwITXlSb290Q0EwHhcNMjIwMzE4MTg1NjMxWhcNNDIwMzE4 +MTg1NjMxWjATMREwDwYDVQQDDAhNeVJvb3RDQTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBALTCoAwaZ+Z4fbPV61jLwbV++Aw5oq2AF4ipI29zmijt4SNO +hers1jnoUQMbGBaaR6wlcQvuRoKJ+lAw5G2TGTxxGmcOFstFIGMd4tpc/hevLD1f +nspBLEJxmhJ+X+HoEyAjCdKP0xwx5cN2Wdn2dpcRy6W4Ql23gJxXr8hV05OQiMGo +HMYGylS8XR5fti+jZB38qMPjZBXFd+54QYL14ZBzNY2kM7/pf43CLGk3Zf7MQEK7 +zfmojKgnH/dX2uxb4ra/8KD7ssZgLn/2/BIQeNmwLFEJXlM24Rs3xPP8Pf5hKz1w +gC1Y+8uJoz4ctUl1Tmyyq1N05btavYsq2EvsPg1L6R8Liznw+psCrmqfZZVV7Z3J +cY181w85nJ6mNCmg6sArxapkgZr01CKFC8fYYX4zpFOIzKWCXQ6CEoE/qvDfgbTw +2AqxIt/VSMtPlWiP1eI7zh7Zcb0yRhRjO2q8R2SgJ7VfYsqKFrdxcoFqmrj3S+EV +SFYqwvQyZoBgRhx4LjBBUjF2ryX/ANgO1+LwVnqC3WD4OUzguPi2TLBpVZtZsY/s +gYkGtTtDsR8nK8cBx+2wOkn1d6i2kI6SYlPv/gKaWTYHSVG/CcYqKxmh2PS58Ryp +HnPi/qJlslrpO96CTcKvhUkeCG0EYEfQTgBu082npQRyLhztPp07qXycbYgTAgMB +AAGjRTBDMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1Ud +DgQWBBSJ6jYnP1klWhGqOB8LcLhFLzDyVDANBgkqhkiG9w0BAQsFAAOCAgEARZo8 +i6A/Sm0ZagTPv4+vMQVottDGX7MxWeThz1DMA8bR/f6Mjnzh+pMC6hqvCyXzIq6U +nguqmAp8XDzp5PtqeeNkT3qpFucGrvT9jGrtQ4ZCEAOBFoK2z1Bo4w2dU8w5VpkQ +gJWOPip9z1KsNItwZnlKvwM0XTpI0/1MJQkV5zmyA+TprfyMQIAtGX+8QD6djx+2 +8Htcz2+yog1Jg+EqXbfUnBsI+PmGsfHq8xXWB0dZZ3Z594oakEoQJ7/5smDLmu5Z +e2nHGxaObHvqisO84jdm4V5NNh5qrlQOkdBxbe+2W74O5TZZVYc/bC5p0EoSCraB +Y21Als/wfg3Z8Yg5+Voxe9i7Cjvo4jh2ZvikPKLJDaLoTfsdvVVCVd/EdY18AEQj +Hk3wXkF1Ffx5yCci+ow8kkR4TuH1LYDoJL7totkBQnj62m5vPdB1L0aFYKWjIpQ4 +Yy2pOHbTGvRnbuiBDszYgvtb/5Lnq/GM6EKFlQ7L3zQHU9gXYWF+5h9sb/bvT4PZ +s/rQIfbo5BQpoMrncqundhv/iGygcCAidy4egjVK3D7r9nGw1qcgoKPwhZvdkBAy +8BsaX3FYM3/17sx3QQ6MDqdBIGyhJ4iSaSKdyFDJrut/ZHD0BPKBE/p4zkpidoMp +SwSKa4OsvPQaeOZBxCYE447K81TLvxlHC51ZmeM= +-----END CERTIFICATE----- diff --git a/testdata/crl/client_1_cert.pem b/testdata/crl/client_1_cert.pem new file mode 100644 index 000000000..ed58a4a65 --- /dev/null +++ b/testdata/crl/client_1_cert.pem @@ -0,0 +1,25 @@ +-----BEGIN CERTIFICATE----- +MIIERzCCAi+gAwIBAgIUfT3AsKVrVQr3p1w/ESTloX3QaIQwDQYJKoZIhvcNAQEL +BQAwEzERMA8GA1UEAwwITXlSb290Q0EwHhcNMjIwMzE4MTg1NjMxWhcNNDIwMzE4 +MTg1NjMxWjAXMRUwEwYDVQQDDAxteWRvbWFpbi5jb20wggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQDM4K3BVt/VOfFNEUOeiVstS7Jd0/mVIAPvHXkly1f/ +L9t5koGIytp9c2JPB5rGZYH2V6n6a+a3XtyvJXarCIcj++Dgx+q49oKcOVNgHPnc +5UfzzB3VLLPGplYLBMZVLg7LGi0pyeoJUqQ4i7IKSb3mwANG306ZEHK85iiGgNwk +eWgZsNpDnMvAUXN3LYBG6vdsHmd0Satcx/K2UMflE6P/NSyvey9Cm/kkGO4I6qbj +yLV80eWKX3yKv72eK0tCep8TfWVuhh6D7ssAsVJYoJmMuWBa8D4+3VdZCumZHsUl +l7aox5rFU4vwl5RHvKKwCuWFZd/HRGS4+Yh2bVwGDA7xAgMBAAGjgY4wgYswCwYD +VR0PBAQDAgO4MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAdBgNVHQ4E +FgQUtf5MIhJQ8FcdIHkzeBenzh4WrC4wHwYDVR0jBBgwFoAUieo2Jz9ZJVoRqjgf +C3C4RS8w8lQwHQYDVR0RBBYwFIIMbXlkb21haW4uY29thwR/AAABMA0GCSqGSIb3 +DQEBCwUAA4ICAQBVUbpUOMhSWdxaL8yMrnka/vYcqzJbmzk8j+93aQgbezEKKn3I +pWmHpU0VE45wmSLjLSQEIr1FU5R52ElhjAQVHGt2BRLRf8xusjJUpEAKAfSnfHQQ +/O0HQdLZ/b7IJVrOLCU0R0iuolOHvgwyWFInwt0M0J/7FxR6TIsbelxioaT72oTY +dW1n7F3AKmYqVRnRNSqK26oVfNQ1pxt1CBk+PwjiJBqZHTXx9aNYh5t7KH765zoP +kodFrVXYagOCA9ataPxQmKb634yUovaPg6SILLxw6ogyJVMM6ZcBR//t4eZ6rPWL +vdFZ3bCn84zpK+jfEcO23DWn16v7Ae8Bj1DN0Wm1jl2Ve4LpxliuxJViy7/0HiMQ +ZyZicviUSy2pvPHsRVbV6rCR/wC74PnptWdFGDEU3sttuBRPZPNW2Q/LLeeGgHQ9 +jLliQkG/sfxrDM61M3SZIzlBItXk1qBERd0SdogM6zwLgtEXn4xBisSsg0c1ujXB +99gMM0JFjn3hLBC+NmawZGYaJqAk/BLp3EnhnHe6u2MOsW1NauSlQluj4se0F1xx +aZR//ea2m0hV16ykgUHhfOYhw7Yv8i30flLNfKXUb25ZCQIxOm53vg611x9wFizM +GVCXIR8jwbzEOpqGiGh8XuW9/3svnI24pCdq87Da8JmU++3XsG8Jh3I/Zg== +-----END CERTIFICATE----- diff --git a/testdata/crl/client_1_key.pem b/testdata/crl/client_1_key.pem new file mode 100644 index 000000000..18b453f2f --- /dev/null +++ b/testdata/crl/client_1_key.pem @@ -0,0 +1,28 @@ +-----BEGIN CERTIFICATE----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCjtfu/LiQLB3bq +HpASkp2GK9CKeXmp2s3j7qa2yvZtofVSUBhlfq/LzFtgYMaUDmzQnd9nuuDdoBHU +sjePEAgdHW99GPGNGuckDRy3IzI8ncnqOk4d3vd9PJKp/mZEVjfKhKlsMqaEODXk +cZ4esRmljD88ZgpYkzkpNryXLSXWTmVC+c5abgn03+zkXkbYbSXD/c9eeX0hvNki +eVWjRqfKg10uNxsB+wyK1B16PJI6KWzqQ2RI99D/ii8Ev7LKriZU7JVK21jY+Kzd +qx7fWoP2H9hM1PfmbUECALGwdqpdBh4K3x9Bnc5ppz/d4SptqvzTFdyiGIDOC0E9 +OtzefRUdAgMBAAECggEACrOOrUSa3o2yXEN7L3ueCHM8wpCGP3AqHUgwZaqGyUvY ++XR648eQPkYxgu9Qi8UVn91yCRnSMSqRf9HWh+eIYD7YVtkWkR69FUI2KlKGqie2 +VzVQfethSjJ3c91JWhY4t2hMmuIEuIfkHfa/W0pAXu34BD63VmrpRaRqV4d//a4v +T8LU9HLCGDCwDIfg6DFZcMMMDXFFFATB7aNnRHVWXlVuaAMVb5v48h9lJ7r8P3mI +6bue+Ob9yZ3ScP4/pl5PcgRBogJmVyRxdLd1XHzMLJlhSK5ik5h0TNoyHqLYMLfK +eaqsJu1JlhaOMNXfKW9My+bVrTMOsWXPmKIIg/IukQKBgQDjGUbKNhnjjWGN2NXj +mg+sCbQHbdwPmgh4oO1xJMaJEkZCvg+QM/u/NVfeBOyST3ZXjOS+hbOSVVYSuaiu +ObWrIySbTqYP9ruERfhFo7ZuEzPa6yIaU5d80H6dTIJG27P5/D5uPnKLOeJjOVny +lgBsitHgBXqhUCjLtYLP3HJgNwKBgQC4i5K0WWkIWXa1Qv3nbB+1W9e3LbozIUpe +7b86yrbtf9b+Yq4HardSOnRnMHa5QZl786/gDfcd4a59aO1jbIVmYSBwK0t+VYYG +0feQkkeKsCeibW5O/nS6E3r4X9Vikz/IqTX50hUAiOsXAIz0ekxAu70UgzxbCuGu +wEV8wVfDSwKBgEFf22MGo/k/j9+3lgsJJI3P1UV2OK09GEcxfGjfv09iNVutPumy +LTxj7MF7BWcw/M5DPu4hqwnrCvYlAAv3jPaRDU6wG1npGx3+znOtpyyU1o6ktZKC +kc9abbh2d+JSCMNj+8zcqTivFx6dOel9iO22IKiuqxiY7MWHoPqZaUuNAoGBAK3/ +63LgWofk0mhVodBxwfPdhKbSFp3e5aBbydJFD/UedDemEzArDm4Zb2db6pUBpRWZ +zloS0Mz73Omh5TG5QI4nRc59A9E6EgScNC+7vHinXrdnNnqEsMpBU9CbizZGX/1y +jdHeoq6+aepmOoDITt06Ji0RD/dHa0K5Rss6AOXBAoGACJjP3qddhIM2hNddf/tb +nkFTk/2wdlIRVECm4qkAyp+zRbjyw2pVCT0h4z63qJbdtJL2tBdvcCf9cKm52/L6 +9py6GFUPl9KG5W7HSYmKMDiPmjMoChQt8j9Svqz3J4ARXJrbvUzzQKmZEXauUqCk +dwrMrfIpwYBQuBK+hidMsiw= +-----END CERTIFICATE----- diff --git a/testdata/crl/client_2_cert.pem b/testdata/crl/client_2_cert.pem new file mode 100644 index 000000000..7acdecbcd --- /dev/null +++ b/testdata/crl/client_2_cert.pem @@ -0,0 +1,25 @@ +-----BEGIN CERTIFICATE----- +MIIERzCCAi+gAwIBAgIUfT3AsKVrVQr3p1w/ESTloX3QaIUwDQYJKoZIhvcNAQEL +BQAwEzERMA8GA1UEAwwITXlSb290Q0EwHhcNMjIwMzE4MTg1NjMyWhcNNDIwMzE4 +MTg1NjMyWjAXMRUwEwYDVQQDDAxteWRvbWFpbi5jb20wggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQDMdNvhkgD9cLNL2++E7Mav8Umj2WFr9XhJffjSQ//u +xmxVqG8ZDt9w7uof/jomVKefPdbzNASxyHMYaVW25oybWWs1sOp4Q1XhQZ4KUoTI +ixpzVruzAz6v3e8H6TG23kibBAp+61R48bw0ZIUcxK1VH9bqIgV8aiVaO24ZwKcR +HOPifJh/+pOGth/nP73y/FEzGXlS42SiMPWdn0XnB9xWN0MpqZ6OyOZ3+RXx/CRH +dpXHdHGhmpbCxNY7wW+chq8nil5jMuISk4pioHzu0LhW1NVITgM2e+ghw+JuTFyH +aKndL8xrMDZVHG9IWI/KyjF9od24kkq1Q4k6yEoEcka7AgMBAAGjgY4wgYswCwYD +VR0PBAQDAgO4MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAdBgNVHQ4E +FgQUEzmMOTXPAxHZUvjfafVjD+/rkA4wHwYDVR0jBBgwFoAUieo2Jz9ZJVoRqjgf +C3C4RS8w8lQwHQYDVR0RBBYwFIIMbXlkb21haW4uY29thwR/AAABMA0GCSqGSIb3 +DQEBCwUAA4ICAQBGY4lCPFdkj6AyjuKbDNUOtOzTDpwGQLYScVgqjAgdAb5u7Jd3 +tdeHytKVnTM9sfUYW8CXzM0AnGz5H6Eh/NV1VeWsY5k6NlitrmcvaVIqDYNF0muY +peJPn25CSi3I9GtZlQbGDnUTG6XtqKu01bZDxUCY1FITQfJzR0qfrKcJV9B/jh82 +MpLkoTvwvkce8tnd+4/bYMp3/BZMkVMnUcUNKemB5SRpG+ir2c9JqaZS2s4yz92m +PYReKohB87mzk+Cuw/6x/suwxFxufcBUiYKjILnsEBLlVUASXX4tXrEMIVBaIN+h +TkvOWfd4TfzI8eCZVQ8m7lHovvBdm+mIYlcIVudIq9+a8QRN/dwQNFzCAUDm7EvL +WOFImSbUGfo7JKp57MbRgOSEwb3cgvsvIkIZIBNnJmuVJ9wTqXf6pt4nRRXtnLd2 +cCJCa+p30Zra8jja8HskgNOYLxy17PwGjlu35cdbAlq1dbPBPEYQltFv9W0Ah8/n +UBlewsTSWlM98ERqGxV0mJqT+lCJ3swib9pVhFUslzrz5jXlAB9Y/H6iG52Mxg3o +YH6Urb5vAwAAeNRQaO6rT8kzKU2B5NIRVIhm3Zu9jbqZd/sJOrvF0dpjan1qebKw +k2Ctrs/927lhzPRgE3N3xVsw3icNncV08cPcUl+yH9y+vkgv4ptymHui/w== +-----END CERTIFICATE----- diff --git a/testdata/crl/client_2_key.pem b/testdata/crl/client_2_key.pem new file mode 100644 index 000000000..c72080cbd --- /dev/null +++ b/testdata/crl/client_2_key.pem @@ -0,0 +1,28 @@ +-----BEGIN CERTIFICATE----- +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDUbi1yspnZ2B8f +SfsFk2aUdcAdz3dHIAktajGWZX6Ouf1ltohKAZygR3wU7sROocd7uV7tSK80I9u3 +qofm+FKWqDs8yo+iJr0GvRcwmRy2DH40LqLW4Qh5Sz4hvxR6lMRgKx0W4DC0kyOp +3vq4amQypIW4u2Mj4McrXHGA+urD9zk669yf4FlMtbxdLhcUZlwpRwZeuhiSgfv1 +6ZFeSP+YN7Ygr5POEgc0/UmAH/ynGcCD3PyQUd1AWuyrn0ICjsP3adSFB0Zz6jph +AZj8a6a0URIgPAZIXqTgWcDWSEdCA9vUzsKCFDylttkqSMs+uhqN5UmS2UHDZU8K +L/R7djZfAgMBAAECggEAaR6eWdA8ptq2R+b1k2RGEjgUmgvUk/sr32/Z2vkdf+ZU +mPUTC0Ax7/R/1+HxfZG746Mu8M+Td4M5EnGOL8L5J3lXWvVHz29JAeEnbRKPbRzQ +hOUBCsEvzsnnlI54RVKBvK8JBY1qPKlFMCXZvtFTBOZ6D5iW7iWomXH07uT7sH2q +wIukuYNAPaUtfP6UjC9ry69RRqmJofoX0XvJw2UrFBMyaD37D5JiEUU+GM1fQGCp +ip2l9J/FzGCids9h+YdjcrQDwDTFzA4WIXbqoQL5w2x/iKJ36YJnn1cCkDOjznSk +vYDx0/xCdBmTdVqnjKdKBTL/9mryYcAUDLRxh3Wr/QKBgQDxmhNYf541l/PW1DG1 +o339aVGCz90HMHnfw4L77zLI40WFHb1bqXwx92vxwAHaEMx08wUrWe3ooCnNIPJP +DxNl64RSUE37hKRAOLLENJP3ATND3VOKkzrPP+z5RKOiBEjsOADFe1Ra5p96NTaT +q25z/a+yarvGdUVhhRMZnf78SwKBgQDhFw5pskImOZtYnxeH8eaM/awB0dH8kyMi +3dVkG6lhzRZLPTkacCg06IJyvjMj3StTKE3MJn+YqWiPBr1gswi1xgZZ5P4EIe7I +4kkbgHVBng/EVHS/c87whNfJ6mhJEoQXnPsVQ8ytm+aGC0WHD0HTTzcuBhLn0dpW +bipdA9P5vQKBgHK8G+HUQTrsXZUxEiZTbRqyME5yDmJCqC4WuBaSosh5/eLYm7tz +ApLsECwvZfG8Nox3eIX84BmwLgnHUqsu2qR1M1Kv5kjC1gnVozfATGBqBoF9ExZl +EvGnRw+dhCQF6uebNOqTxhyhFy0/Jhr8t6iH2i9dtqzptjg4rThmKth/AoGBAMqn +1I0rNk1uHkRa8HewPpAAMGZu/6101/SjX2XDVew9Fu5kz83S3xBLqm8eebK3hTNY +nTrKCqVrGT10pvqyFox6Huu+tUkJOBDbU1EUhf2vDqkIFRjubom0QQiFKKFpr04H +QzRxF43TSGi1K0MfZHeY4ahpRYo8MWURyMh4EtjNAoGBAN1D1BYTKmHgOToLR1NZ +N5ZzkEUy3LltMb3tUItZTklXOxLAsb3qcj59Z/HpVaQKLP6wOivB6Z6L/OJEHK40 +RdyhGwoPSLDfSEDFrMVRK50uu+9tNzxrQsZCTTiwqCHlXx2iFJeGE/twj5tCJRIC +hP50WUFExYShvgLmveJEXvVV +-----END CERTIFICATE----- diff --git a/testdata/crl/server_1_cert.pem b/testdata/crl/server_1_cert.pem new file mode 100644 index 000000000..1465259db --- /dev/null +++ b/testdata/crl/server_1_cert.pem @@ -0,0 +1,25 @@ +-----BEGIN CERTIFICATE----- +MIIERzCCAi+gAwIBAgIUfT3AsKVrVQr3p1w/ESTloX3QaIIwDQYJKoZIhvcNAQEL +BQAwEzERMA8GA1UEAwwITXlSb290Q0EwHhcNMjIwMzE4MTg1NjMxWhcNNDIwMzE4 +MTg1NjMxWjAXMRUwEwYDVQQDDAxteWRvbWFpbi5jb20wggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQCupXgFDpT8jkn3uDpPoConNoF/WbdgeW3EYPHu9pE1 +mevqbRxS7iPxMnOI/KYjz4EybZtSjmRHQqyhwQ0+wd9DxCA3hSQltwSeFJ0ReuBN +480gneV2d9nCazTGRtG4VwIcrC308BDe1UlEmzvu8i8HeISzAXVEaMAPK1ScZHri +igaXlE04ybqYr5u1YScoKDBrkaA3zTkhXh0vskUfQ5upEatogZyENBQsn6KrdfBC +fq19k8TxLR8sbTMSaBAHhaN9YaikJ5lRTqQOiUUgjnqubBQIfkZimQCnaTWZeGM9 +r18bq/Lr9mohAlh3xMzJIPrL1tsygGQQ4ihTususe7j5AgMBAAGjgY4wgYswCwYD +VR0PBAQDAgO4MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAdBgNVHQ4E +FgQUmYHFHhTsyycaragnPqn14WqaLbQwHwYDVR0jBBgwFoAUieo2Jz9ZJVoRqjgf +C3C4RS8w8lQwHQYDVR0RBBYwFIIMbXlkb21haW4uY29thwR/AAABMA0GCSqGSIb3 +DQEBCwUAA4ICAQBSpCzkSGIAy9+CD0mBvFVeir8aivVq05DJ33L45sDwwZnMHDWh +9+e7VuF7XwiZMrp0jA1gdLYAY/OEOZMr0+A8vpEV+rTUA9/A/KHEEsnjrIKnrLgm +RPMfGgaI2izo+25ocbMNerDAPkrFCuP3G4YRuKh3tNUpwmLpkVqQGSzS5d+49WhA +QFYYCMjQR+OmqyOj4L8QXTeLyoPoRpCgm84GDJa1BtkIY0k+Vi4XGvLmdBScLzqp +xLqxxWMTxe78/AJg/BwwoVHs2jQMNDdDrFgGbrCfUv+FTXlm0Hb5aF915MdGLIBe +6MUe6trILaYS2TuDFUypTfJFQMcpOatjHY55OsLzDmGh3rNFbfH2wRPTvqbUoN6y +xjXJvisGMpKWYkqEKNd6SQScTLA2WmufZiHUQEIfIAVrQFm6P94kD3+MX8fC67DX +k6bJc0QWyQ4LbkoF42wz9AKlUbYyc8LO2mwIdQIpAQLtR8aFKO66rHawG0UA8y/l +2aPoAR+h4OY4hwsqKT1yYbtXd2nO6Lfe4TzQmDyW0/FGPSo66FAngpuzejjsDDG+ +lBPkecRENdWktd1UVRhhcEiL1OvdxOqcHR95ycV0QO5BLNY5Im1st7+a157Ckcu7 +7aiqquosPOTvo11BtjHBxeq/P3GCWLoT4J1dtDd/q77CTXJy0H4PpWKmkg== +-----END CERTIFICATE----- diff --git a/testdata/crl/server_1_key.pem b/testdata/crl/server_1_key.pem new file mode 100644 index 000000000..4538ae0cd --- /dev/null +++ b/testdata/crl/server_1_key.pem @@ -0,0 +1,28 @@ +-----BEGIN CERTIFICATE----- +MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDTRYrmOrj6vX8c +rpAXO4J4+6T0bSkbYN0XbmKI96h0BpZa6WA+S14964Wb0SrHY2KsbF34q2xJrpKz +AgccraXOGjWEgh87xLUIHm2UJHfXMOapVYQiOr+3GZANFnSaFXc6/G2AcI/NyhwM +oXbCeFnjModecDLVwp0tHkdwQQVUHAmnnxg7jktj9FAL4IVR3RBevL+jLe/HcvKZ +Wwl1LvDDZKDbEz+bU2dfszY+ZR3Zb0sMeOn09gpizskh8xV+DYVP/+bf0cBBa1Ya +6dQxC+WdN6XXCMcQhlnMtm1ld/KSxaQBGRRPqQ3t00SOIIvsQ2hiRaI/VvUraqc6 +60ydgow/AgMBAAECgf863nsrATHfVu4UZTpr6X5xjQJpxAEFn/f7Ohw6uMeM4kkD +DARwAeWWBgqKCxPgeyZY5S6fcSS7Yz7SomiuP7SeZASFkmchla4xP56eU4sRFeSF +SqQxkC0w1+6hDEtxTonqkGvys2qz7PKOkm8vwQP1oB7C3ICjD5dm+wjs6TE9k2XK +wH30Od2KcroZ23aZ2oIplUPUPtK2xAf2Q5Y7fnTayainOjv9OMted9fpc3etovbC +//QpWFGW496B2ZP/e3cr8PiClEvUn9ERGjvCYGCkrPcXU6RPC10XEW+fQdAavWes +0ka6Fpcr4iNyvyTKwrmqu5yVF+ZpX979PLOGThECgYEA+ylAzbyxg0D3iH96DlY7 +QjydfQoRSW7YP7ev5yaar4z6ERNHKQqOEq62qJTjAKQ2tqWjajjmclBrBQNVz0PC +3NN1ivEdq73QUBlfv0r4THKmBGPG/IxFjZq3Mqp3Bx2fdwpA+W2OWnPlNBo3T3+u +++gnzEYAJfH0X0xwJedHOUUCgYEA11eNH0oK40qI+jaQs4s+H2v2P+w3BP8p+Aus +wNMS+pQLaR0j0ZnmaBqC9/Y1Y1LBCpk1BlVOeAIWwX9SzMFAnvZLpHsVrCor10Of +u6zcFE92U1V/wkExOcTItKopOk9HCfrRGhyb9Fa758lCBw042P+mZ/uYEZlfu9wm +IZXpDbMCgYEAgAv0Ie/FgGkqychT7eNAqvBESm9LiOieDz4SzAH+cumow/PUH7Rl +4lh4f1IIuVb/HfcsbQc9VaJyLUgaA2VEf1i/YGq0+c332h5Vli0ekbsRsMM9u5u4 +Cg2KwKXvsQ0FM6dioMed/7d+byW+dSVfjMY7JAW8JZxJPhy2QFy9DxECgYBnIAV0 +O4g1SyeH9AOeCAvLDm/SMvQyT2Qw5p5nhW2sVKOWRh82LGab6j5YMy9kDmhmA/LR +wp6eeBmftrLXXaDtv3OAJHW/ij6Oi1L+lIycqWU4CVTymTfSu3uGkYrG4tpZXCUx +RQwmmjbIjKgzKlDUErIFUAaGPxYKqCYWpW0DYwKBgQCq6DJlqbSE5Bsq80HwYw1j +eL9bWkYxUNyToj+weFuKgyD1/yUIHAlcJj0NbQTmlGcxOPLQg9BoNUXAIdg/5dA8 +aEtbMXcG1F+stojs/u3qTl0jzuPbYmGtQJpxucSWIHYAl7h59zV6dBo4TwmZmLwb +gwvJEPBjIxq3uu9fC0nfYw== +-----END CERTIFICATE----- diff --git a/testdata/crl/server_2_cert.pem b/testdata/crl/server_2_cert.pem new file mode 100644 index 000000000..2c8564910 --- /dev/null +++ b/testdata/crl/server_2_cert.pem @@ -0,0 +1,25 @@ +-----BEGIN CERTIFICATE----- +MIIERzCCAi+gAwIBAgIUfT3AsKVrVQr3p1w/ESTloX3QaIMwDQYJKoZIhvcNAQEL +BQAwEzERMA8GA1UEAwwITXlSb290Q0EwHhcNMjIwMzE4MTg1NjMxWhcNNDIwMzE4 +MTg1NjMxWjAXMRUwEwYDVQQDDAxteWRvbWFpbi5jb20wggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQDBdGOZWPqH2cnVXCvsuFBO34RIehjqhbAoIKx2b5HV +iXbWwYBs6MXiRxykHnttDh0s/UwgS0wYcgRQoq9YGx2PvoPBe4pE/ePFrGpx6+8N +I0Ez7x0R3G6k7KFQtgbeZVxmQKx57w1jU3+kbwZExq/ZbtEV42BepuaaLH91Cymc +w0uSOegaaC+LjBGN+q4yFC8n4WmSvuzQbRyU/P8QvBSRJxxU7PgVp22BlsjF0ZdU +5ZqA/mYjvn94RbdnQj1jZpveoGHS+/KWTGZrFZ9a0SyxgrIj/Lbm/vqXYbqHtPKs +BUlqPtR8djBF53QdgEWtqSlC9LYoYoB8kA/tTiAgD4jbAgMBAAGjgY4wgYswCwYD +VR0PBAQDAgO4MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAdBgNVHQ4E +FgQULZzuwmpRtwikHQQ1CzmPXe60mc8wHwYDVR0jBBgwFoAUieo2Jz9ZJVoRqjgf +C3C4RS8w8lQwHQYDVR0RBBYwFIIMbXlkb21haW4uY29thwR/AAABMA0GCSqGSIb3 +DQEBCwUAA4ICAQAN6omiJJpTiP7U1uw0KcssqCx5C2aelNe2knNL7rgtEMNnkwlU +73OT45GP9lN8HbJpXKE50Ju/yOC8D4y6kyQvOn3wuMI9Kxk54EYgJkBSNVdORHuI +LGYGww262+/j0siUTfLytklxypD/mraZaLyXrd63FOSgZcynWjY3ITk95b52pBzG +M+8W5fuUc1q8yGyHDlI7DP091vmKt0qcWscANMonaPuuXqSeH+IlLwZyDLQYn7GS +jtXNMkWz9w7QazkStP3zjHHeMZlzGclj61LxvVq3D6Wl5QsqX6e5e+Xs47Se5/8C +uDWb+9H/1GvtoHQPPt3qQNIt+BHAnII35+ObDZuzoWCap1/fPMoFY0ZhrSnhcsND +7t1VyMhI8C/QT7CXWolezGIF8MdtCZPAF48mqW3g+TkDIvMnpYVU41QuLO1/WiTY +NsHXFzAYo/hcPqy3ZhmHwJvcpqYmFdaO7AJRsWPntgtHkG/zihtlRZ9sXFr25C/U +IOXR6E5EAOgOf+6t4dibxZ2hdpvChlWVMIAm7XjTlvj0kR/JOvyD5sbMGz5HV7Ye +Gtov37RwlIWiAV9RZzGrQO5KiSZEYVZTUki9uSWdXC6sCbIs2oNC3zqxQSu0In3e +cWdRkapkrWr/nPsO/UWmmUpTwTFJzJ+OUb1ZnYwV020rcWBa5NMEj2xhbQ== +-----END CERTIFICATE----- diff --git a/testdata/crl/server_2_key.pem b/testdata/crl/server_2_key.pem new file mode 100644 index 000000000..d4a863563 --- /dev/null +++ b/testdata/crl/server_2_key.pem @@ -0,0 +1,28 @@ +-----BEGIN CERTIFICATE----- +MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCtTN5byaR6+TkJ +Sht2jBpKFbSmq2BpafX0FyPNS8m97+/pHDgkEF7mrOgOFpqCkvdw4+UeaFLhmXpf +obTy0x7jTqzDNJ7yer5OSnxEZHKpK03VGZKHQofmTerlMjSNeYeuWVwaRO0Epy90 +tYZ4DZxrdE3biziczY8bbQPpvqh5DUlNThOQbSyL86PpJHIZfJdhDAL0oVlwhCoJ +4JAlFHxVWegCMaRFXw4b/u8IILUqNR3QGO7ST+cBm+KWfs4Pu2knSqqcC0b+kR5n +7vks1oNbxWFanVOTLFzdCt0ZLxB1jnkN7GFzKzF0/5E4H5S8zkWLxyDwcKeGHi+r +jlgyRkGrAgMBAAECggEADGTV9jyKjdzrDlYFdsn4S1oYDF9vSrqwQ1+wSMtlxza0 +srg476NYFilBg1hsfnAiUCmMRktxuf6u+M3o0gD1UY5b3q4RvAe5OoIrNvz0ElMt +gtMMXq4MaBUkenXHumJ5qKdtZdeOF+oZA8DDuCxJBopP0ya2ysgMtwpp4Dqpc9a4 +HFZBEC/9TY/gtiNGRPh0knuyEAmF/O+ph0gX0F0mbs+OXtEid1H2bh10u7O2n6wj +hDRiyaB2wLM2wkfH8NNjdsJ8/jKSOxyN0r3CL1PciXpAdZdJ2trehxhdXFBU72yg +5Uj2K3MNAQXcqjZd4OKxTzH85+S256F/ao2sV6x54QKBgQDqvP2MXNsnG+INldTD +ZaXpM5ckNpUSt+Oj7sxZh7ecYyxtI5S9eRMKXn9nC+2vjrXTRI1GafkiO0AZu5uS +cl6CVmjOvBoCTKu4JqNDxlAQRFNc/XgNqNWdONzPZWCaTdzwvA6NpmWpMCMyRQ7C +YUx2UDGT6emJR5H4s8kc6mf7UQKBgQC8/0fgXtNtnvoICqsltEpjhDtTiGFDJVaZ +R7k2bQbcV+EO0ACC7es+O6y1o105h3cIi+DrNMPEjCLmpmx6jrT8i9ikSiVaA4JE +69bv1pnmwaZ0c3GpNIbY4Jg1UZ44HvpufVnlsUk/uxBiqNYn4JUwTBAcWkebaZ7I +XHu4SPh2OwKBgBHIkZjhrASxexW2ZTEMcV5Sdz/aFr8dSVSxEbAytPlXFhWKnYkh +NA0UDajb4XzsXeAMkHtmKearAHcynF2i5oAPVc9btsi30EaaPsIysvwYgQxJc5/t +S4mmtivMLV5jSbq/NIcMtST1LaVwT+bwAh/wgWEIVpX84xUpYbIcHBaRAoGAMGEI +fR7I8F6pkjVo6hXklOTcat2WSCHesQ3zE0OFZhH4wlnsR5eviBaudzCCRJ+wkLd9 +s7emBUH6DSC81AKDwcHqiuOP/CK5zfqw4mQEsVUQzu5eQfn4KrwTOlLSNXt4j5/2 +yx0+qtmvsBGYAE0041AVL6zMd7PpuVAzO1EyiNECgYBwZXBL9VL16o63cdHsI7Wv +FS2AUZumB1cpNKr3GmrSCVW4b9GUNQyD4DOMRlIl31LURjlzEqZRIykprilU14TL +2vnhxuPsoq4nzJFXsroydeU+xWrJ7/puGi1/qNEue2S0JQ7Zvh57Y1lx5ltRBIFY +mqeSTpnUNflSEJZzu5ubJw== +-----END CERTIFICATE----- diff --git a/testdata/grpc-version.json b/testdata/grpc-version.json new file mode 100644 index 000000000..72cd4b61a --- /dev/null +++ b/testdata/grpc-version.json @@ -0,0 +1,144 @@ +{ + "gnxi": { + "profile_id": "gnxi", + "active": { + "certificate": { + "EType": 0, + "CreatedOn": 1, + "Version": "startCert", + "CertPath": "/testdata/mtls/server_V1_cert.pem", + "KeyPath": "/testdata/mtls/server_V1_key.pem", + "Final": true + }, + "trust_bundle": { + "EType": 1, + "CreatedOn": 2, + "Version": "caStart", + "CertPath": "/testdata/mtls/ca_V1_bundle.pem", + "KeyPath": "", + "Final": true + }, + "crl_bundle": { + "EType": 2, + "CreatedOn": 3, + "Version": "crlStart", + "CertPath": "../testdata/mtls", + "KeyPath": "", + "Final": true + }, + "auth_policy": { + "EType": 3, + "CreatedOn": 4, + "Version": "apStart", + "CertPath": "unknown", + "KeyPath": "", + "Final": true + } + }, + "last_active": { + "certificate": { + "EType": 0, + "CreatedOn": 0, + "Version": "", + "CertPath": "", + "KeyPath": "", + "Final": false + }, + "trust_bundle": { + "EType": 0, + "CreatedOn": 0, + "Version": "", + "CertPath": "", + "KeyPath": "", + "Final": false + }, + "crl_bundle": { + "EType": 0, + "CreatedOn": 0, + "Version": "", + "CertPath": "", + "KeyPath": "", + "Final": false + }, + "auth_policy": { + "EType": 0, + "CreatedOn": 0, + "Version": "", + "CertPath": "", + "KeyPath": "", + "Final": false + } + } + }, + "p4rt": { + "profile_id": "p4rt", + "active": { + "certificate": { + "EType": 0, + "CreatedOn": 1, + "Version": "startCert", + "CertPath": "/testdata/mtls/server_V1_cert.pem", + "KeyPath": "/testdata/mtls/server_V1_key.pem", + "Final": true + }, + "trust_bundle": { + "EType": 1, + "CreatedOn": 2, + "Version": "caStart", + "CertPath": "/testdata/mtls/ca_V1_bundle.pem", + "KeyPath": "", + "Final": true + }, + "crl_bundle": { + "EType": 2, + "CreatedOn": 3, + "Version": "crlStart", + "CertPath": "../testdata/mtls", + "KeyPath": "", + "Final": true + }, + "auth_policy": { + "EType": 3, + "CreatedOn": 4, + "Version": "apStart", + "CertPath": "unknown", + "KeyPath": "", + "Final": true + } + }, + "last_active": { + "certificate": { + "EType": 0, + "CreatedOn": 0, + "Version": "", + "CertPath": "", + "KeyPath": "", + "Final": false + }, + "trust_bundle": { + "EType": 0, + "CreatedOn": 0, + "Version": "", + "CertPath": "", + "KeyPath": "", + "Final": false + }, + "crl_bundle": { + "EType": 0, + "CreatedOn": 0, + "Version": "", + "CertPath": "", + "KeyPath": "", + "Final": false + }, + "auth_policy": { + "EType": 0, + "CreatedOn": 0, + "Version": "", + "CertPath": "", + "KeyPath": "", + "Final": false + } + } + } +}