From 2323d3ffe6e66ea7ffa40be232aa54c1d24c8651 Mon Sep 17 00:00:00 2001 From: Vladimir Lavor Date: Tue, 15 Jan 2019 10:08:12 +0100 Subject: [PATCH] added mock adapter for new VPP stats Change-Id: I9d6cf28fcde79ba648321cbd92941ee7ef8e0812 Signed-off-by: Vladimir Lavor --- adapter/mock/mock_stats_adapter.go | 61 ++++++++++++++++++++++ .../mock/{mock_adapter.go => mock_vpp_adapter.go} | 0 adapter/stats_api.go | 14 +++++ 3 files changed, 75 insertions(+) create mode 100644 adapter/mock/mock_stats_adapter.go rename adapter/mock/{mock_adapter.go => mock_vpp_adapter.go} (100%) diff --git a/adapter/mock/mock_stats_adapter.go b/adapter/mock/mock_stats_adapter.go new file mode 100644 index 0000000..aba93a2 --- /dev/null +++ b/adapter/mock/mock_stats_adapter.go @@ -0,0 +1,61 @@ +// Copyright (c) 2019 Cisco and/or its affiliates. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at: +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Package mock is an alternative VPP stats adapter aimed for unit/integration testing where the +// actual communication with VPP is not demanded. + +package mock + +import ( + "git.fd.io/govpp.git/adapter" +) + +// StatsAdapter simulates VPP stats socket from which stats can be read +type StatsAdapter struct { + entries []*adapter.StatEntry +} + +// NewStatsAdapter returns a new mock stats adapter. +func NewStatsAdapter() *StatsAdapter { + return &StatsAdapter{} +} + +// Connect mocks client connection to the stats API. +func (a *StatsAdapter) Connect() error { + return nil +} + +// Disconnect mocks client connection termination. +func (a *StatsAdapter) Disconnect() error { + return nil +} + +// ListStats mocks name listing for all stats. +func (a *StatsAdapter) ListStats(patterns ...string) ([]string, error) { + var statNames []string + for _, stat := range a.entries { + statNames = append(statNames, stat.Name) + } + return statNames, nil +} + +// DumpStats mocks all stat entries dump. +func (a *StatsAdapter) DumpStats(patterns ...string) ([]*adapter.StatEntry, error) { + return a.entries, nil +} + +// MockStats replaces current values of all supported stats by provided value +func (a *StatsAdapter) MockStats(stats []*adapter.StatEntry) { + a.entries = stats +} \ No newline at end of file diff --git a/adapter/mock/mock_adapter.go b/adapter/mock/mock_vpp_adapter.go similarity index 100% rename from adapter/mock/mock_adapter.go rename to adapter/mock/mock_vpp_adapter.go diff --git a/adapter/stats_api.go b/adapter/stats_api.go index 8815aae..4a3f130 100644 --- a/adapter/stats_api.go +++ b/adapter/stats_api.go @@ -1,3 +1,17 @@ +// Copyright (c) 2019 Cisco and/or its affiliates. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at: +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package adapter // StatsAPI provides connection to VPP stats API. -- 2.16.6