Help us shape the future of Go! Take the 2026 Go Developer Survey

registrymocks

package
v0.5.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 2, 2026 License: MIT Imports: 3 Imported by: 0

Documentation

Overview

Package registrymocks 提供 registry 包 4 个接口(Registrar/Discoverer/Subscriber/ConfigStore) 的统一 mock 实现,供单元测试使用(原为 ekit internal 包,拆分后跨模块复用故公开)。

消除历史散落在 nns/client、kitex/nns、kitex/registry、hertz/registry、hertz/nns 等多个 _test.go 文件中的重复 mock 定义。

设计原则:

  • 字段可配置:每个 mock 暴露必要的字段(错误、返回值)用于测试用例
  • 线程安全:所有方法都加锁,支持并发测试场景
  • 完整实现:覆盖接口的所有方法(不留 panic 默认)

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ConfigStore

type ConfigStore struct {

	// dataID/group → 配置内容
	Configs map[string]string
	// GetConfig 默认错误(未命中 Configs 时返回)
	Err error
	// dataID/group → onChange 回调
	Listening map[string]func(string)
	// contains filtered or unexported fields
}

ConfigStore 是 registry.ConfigStore 的可配置 mock 实现。

通过 configs map 配置 dataID/group 对应的配置内容; 通过 listening map 跟踪已注册的监听器,可通过 FireChange 模拟配置变更推送。

func NewConfigStore

func NewConfigStore() *ConfigStore

NewConfigStore 创建一个空的 ConfigStore。

func (*ConfigStore) FireChange

func (m *ConfigStore) FireChange(dataID, group, newValue string)

FireChange 主动触发指定 dataID/group 的 onChange 回调,模拟配置中心推送。

func (*ConfigStore) GetConfig

func (m *ConfigStore) GetConfig(_ context.Context, dataID, group string) (string, error)

GetConfig 返回配置内容。

func (*ConfigStore) ListenConfig

func (m *ConfigStore) ListenConfig(_ context.Context, dataID, group string, onChange func(string)) error

ListenConfig 注册变更监听器。

func (*ConfigStore) ListeningCountFor

func (m *ConfigStore) ListeningCountFor(dataID, group string) int

ListeningCountFor 返回指定 dataID/group 当前注册的监听器数量(1 或 0)。 供测试轮询等待 ListenConfig 完成注册。

func (*ConfigStore) SetErr

func (m *ConfigStore) SetErr(err error)

SetErr 并发安全地更新 GetConfig/ListenConfig 的默认错误(模拟故障注入与恢复)。

func (*ConfigStore) StopListenConfig

func (m *ConfigStore) StopListenConfig(_ context.Context, dataID, group string) error

StopListenConfig 注销监听器。

type Discoverer

type Discoverer struct {

	// 默认返回(所有服务都返回这些实例,除非 InstancesMap 覆盖)
	Instances []registry.Instance
	Err       error

	// AllInstances / AllErr 是 DiscoverAll 的返回
	AllInstances []registry.Instance
	AllErr       error

	// Per-service 覆盖:serviceName → instances
	InstancesMap map[string][]registry.Instance
	// Per-service 错误:serviceName → error
	ErrMap map[string]error
	// contains filtered or unexported fields
}

Discoverer 是 registry.Discoverer 的可配置 mock 实现。

支持两种使用模式:

  1. 简单模式:所有服务返回相同的 Instances / Err
  2. Per-service 模式:在 InstancesMap 中按服务名配置不同返回值

func (*Discoverer) Discover

func (m *Discoverer) Discover(_ context.Context, serviceName string) ([]registry.Instance, error)

Discover 返回配置的实例列表。

func (*Discoverer) DiscoverAll

func (m *Discoverer) DiscoverAll(_ context.Context, serviceName string) ([]registry.Instance, error)

DiscoverAll 返回配置的全部实例列表。

type Registrar

type Registrar struct {
	Registered   []registry.Instance
	Deregistered []registry.Instance
	RegErr       error // Register 返回的错误
	DeregErr     error // Deregister 返回的错误
	// contains filtered or unexported fields
}

Registrar 是 registry.Registrar 的可配置 mock 实现。

用法:

reg := &registrymocks.Registrar{RegErr: errors.New("register failed")}
err := reg.Register(ctx, registry.Instance{...})
if err == nil { t.Error("expected error") }

func (*Registrar) Deregister

func (m *Registrar) Deregister(_ context.Context, inst registry.Instance) error

Deregister 记录注销实例并返回配置的 DeregErr。

func (*Registrar) Register

func (m *Registrar) Register(_ context.Context, inst registry.Instance) error

Register 记录注册实例并返回配置的 RegErr。

func (*Registrar) Reset

func (m *Registrar) Reset()

Reset 清空记录(保留错误配置)。

type Subscriber

type Subscriber struct {
	// contains filtered or unexported fields
}

Subscriber 是 registry.Subscriber 的可配置 mock 实现。

支持订阅后通过 Push 手动触发回调,模拟注册中心的推送行为。

func NewSubscriber

func NewSubscriber() *Subscriber

NewSubscriber 创建一个空的 Subscriber。

func (*Subscriber) CallbackCount

func (m *Subscriber) CallbackCount(serviceName string) int

CallbackCount 返回指定服务注册的回调数量(测试用)。

func (*Subscriber) Push

func (m *Subscriber) Push(serviceName string, instances []registry.Instance)

Push 主动触发指定服务的所有回调,模拟注册中心的实例变更推送。

func (*Subscriber) Subscribe

func (m *Subscriber) Subscribe(_ context.Context, serviceName string, cb func([]registry.Instance)) error

Subscribe 注册回调。

func (*Subscriber) Unsubscribe

func (m *Subscriber) Unsubscribe(_ context.Context, serviceName string) error

Unsubscribe 注销回调。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL