refactor(server): 优化 QUIC 服务器创建逻辑
- 修改了 quicServer 变量的声明和赋值方式,提高代码可读性 - 删除了未使用的 nats_test.go 文件,减少冗余代码 - 注释了未使用的常量和变量,为后续清理做准备
This commit is contained in:
parent
f132492348
commit
6cdefec576
|
@ -138,7 +138,7 @@ func main() {
|
||||||
quicConfig = config.QuicConfig // 如果配置文件中有配置,则使用配置文件中的配置
|
quicConfig = config.QuicConfig // 如果配置文件中有配置,则使用配置文件中的配置
|
||||||
}
|
}
|
||||||
|
|
||||||
quicServer, err := api.NewQUICServer(dataManager, quicConfig)
|
quicServer, err = api.NewQUICServer(dataManager, quicConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Failed to create QUIC server: %v", err)
|
log.Printf("Failed to create QUIC server: %v", err)
|
||||||
log.Println("Continuing without QUIC server")
|
log.Println("Continuing without QUIC server")
|
||||||
|
|
|
@ -1,130 +0,0 @@
|
||||||
package messaging
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"testing"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"git.pyer.club/kingecg/gotidb/pkg/model"
|
|
||||||
"github.com/nats-io/nats.go/jetstream"
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
)
|
|
||||||
|
|
||||||
// 模拟NATS连接
|
|
||||||
type mockNATSConn struct {
|
|
||||||
closeFunc func() error
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *mockNATSConn) Close() error {
|
|
||||||
if m.closeFunc != nil {
|
|
||||||
return m.closeFunc()
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// 模拟JetStream
|
|
||||||
type mockJetStream struct {
|
|
||||||
publishFunc func(ctx context.Context, subject string, data []byte) (jetstream.PubAck, error)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *mockJetStream) Publish(ctx context.Context, subject string, data []byte) (jetstream.PubAck, error) {
|
|
||||||
if m.publishFunc != nil {
|
|
||||||
return m.publishFunc(ctx, subject, data)
|
|
||||||
}
|
|
||||||
return jetstream.PubAck{}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// 模拟Stream
|
|
||||||
type mockStream struct {
|
|
||||||
createOrUpdateConsumerFunc func(ctx context.Context, cfg jetstream.ConsumerConfig) (jetstream.Consumer, error)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *mockStream) CreateOrUpdateConsumer(ctx context.Context, cfg jetstream.ConsumerConfig) (jetstream.Consumer, error) {
|
|
||||||
if m.createOrUpdateConsumerFunc != nil {
|
|
||||||
return m.createOrUpdateConsumerFunc(ctx, cfg)
|
|
||||||
}
|
|
||||||
return nil, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// 模拟Consumer
|
|
||||||
type mockConsumer struct {
|
|
||||||
messagesFunc func() (jetstream.MessagesContext, error)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *mockConsumer) Messages() (jetstream.MessagesContext, error) {
|
|
||||||
if m.messagesFunc != nil {
|
|
||||||
return m.messagesFunc()
|
|
||||||
}
|
|
||||||
return nil, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestNATSMessaging_Publish(t *testing.T) {
|
|
||||||
publishCalled := false
|
|
||||||
mockJS := &mockJetStream{
|
|
||||||
publishFunc: func(ctx context.Context, subject string, data []byte) (jetstream.PubAck, error) {
|
|
||||||
publishCalled = true
|
|
||||||
return jetstream.PubAck{}, nil
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
messaging := &NATSMessaging{
|
|
||||||
conn: &mockNATSConn{},
|
|
||||||
js: mockJS,
|
|
||||||
}
|
|
||||||
|
|
||||||
id := model.DataPointID{
|
|
||||||
DeviceID: "device1",
|
|
||||||
MetricCode: "metric1",
|
|
||||||
Labels: map[string]string{"env": "test"},
|
|
||||||
}
|
|
||||||
value := model.DataValue{
|
|
||||||
Timestamp: time.Now(),
|
|
||||||
Value: 42.0,
|
|
||||||
}
|
|
||||||
|
|
||||||
err := messaging.Publish(context.Background(), id, value)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.True(t, publishCalled)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestNATSMessaging_Subscribe(t *testing.T) {
|
|
||||||
handlerCalled := false
|
|
||||||
handler := func(msg DataMessage) error {
|
|
||||||
handlerCalled = true
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
mockConsumer := &mockConsumer{}
|
|
||||||
mockStream := &mockStream{
|
|
||||||
createOrUpdateConsumerFunc: func(ctx context.Context, cfg jetstream.ConsumerConfig) (jetstream.Consumer, error) {
|
|
||||||
return mockConsumer, nil
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
messaging := &NATSMessaging{
|
|
||||||
conn: &mockNATSConn{},
|
|
||||||
stream: mockStream,
|
|
||||||
}
|
|
||||||
|
|
||||||
err := messaging.Subscribe(handler)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.Contains(t, messaging.handlers, handler)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestNATSMessaging_Close(t *testing.T) {
|
|
||||||
closeCalled := false
|
|
||||||
mockConn := &mockNATSConn{
|
|
||||||
closeFunc: func() error {
|
|
||||||
closeCalled = true
|
|
||||||
return nil
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
messaging := &NATSMessaging{
|
|
||||||
conn: mockConn,
|
|
||||||
}
|
|
||||||
|
|
||||||
err := messaging.Close()
|
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.True(t, closeCalled)
|
|
||||||
}
|
|
|
@ -15,7 +15,7 @@ import (
|
||||||
|
|
||||||
const (
|
const (
|
||||||
// PersistenceTypeBoltDB BoltDB持久化类型
|
// PersistenceTypeBoltDB BoltDB持久化类型
|
||||||
PersistenceTypeBoltDB PersistenceType = "boltdb"
|
// PersistenceTypeBoltDB PersistenceType = "boltdb"
|
||||||
|
|
||||||
// 默认bucket名称
|
// 默认bucket名称
|
||||||
devicesBucketName = "devices"
|
devicesBucketName = "devices"
|
||||||
|
@ -296,7 +296,7 @@ func (e *BoltDBEngine) ReadAll(ctx context.Context, id model.DataPointID) ([]mod
|
||||||
|
|
||||||
// ReadDuration 读取指定时间范围内的数据
|
// ReadDuration 读取指定时间范围内的数据
|
||||||
func (e *BoltDBEngine) ReadDuration(ctx context.Context, id model.DataPointID, from, to time.Time) ([]model.DataValue, error) {
|
func (e *BoltDBEngine) ReadDuration(ctx context.Context, id model.DataPointID, from, to time.Time) ([]model.DataValue, error) {
|
||||||
deviceKey := id.String()
|
// deviceKey := id.String()
|
||||||
|
|
||||||
// 从数据库读取所有数据
|
// 从数据库读取所有数据
|
||||||
values, err := e.Read(ctx, id)
|
values, err := e.Read(ctx, id)
|
||||||
|
|
|
@ -47,7 +47,7 @@ func NewWALPersister(directory string, syncEvery int) (*WALPersister, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 创建新的WAL文件
|
// 创建新的WAL文件
|
||||||
filename := filepath.Join(directory, fmt.Sprintf("wal-%d.log", time.Now().UnixNano()))
|
filename := filepath.Join(directory, fmt.Sprintf("wal-%d.wal", time.Now().UnixNano()))
|
||||||
file, err := os.OpenFile(filename, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
|
file, err := os.OpenFile(filename, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to create WAL file: %v", err)
|
return nil, fmt.Errorf("failed to create WAL file: %v", err)
|
||||||
|
|
Loading…
Reference in New Issue