[优化] 数据库结构优化

This commit is contained in:
ryan
2026-06-01 15:20:43 +08:00
parent fe13db95c2
commit 9de33f7064
53 changed files with 937 additions and 596 deletions
+174 -187
View File
@@ -167,9 +167,9 @@ func TestHeartbeatNodeReturnsPreviewUpdateSettings(t *testing.T) {
NodeID: "node-preview-1",
Name: "preview-edge-1",
IP: "10.0.0.8",
AgentToken: "agent-token",
AgentVersion: "v0.4.0",
NginxVersion: "1.27.1.2",
AccessToken: "agent-token",
Version: "v0.4.0",
ExtVersion: "1.27.1.2",
Status: NodeStatusOnline,
UpdateRequested: true,
UpdateChannel: "preview",
@@ -196,8 +196,8 @@ func TestHeartbeatNodeReturnsPreviewUpdateSettings(t *testing.T) {
NodeID: node.NodeID,
Name: node.Name,
IP: node.IP,
AgentVersion: node.AgentVersion,
NginxVersion: node.NginxVersion,
Version: node.Version,
ExtVersion: node.ExtVersion,
OpenrestyStatus: OpenrestyStatusUnhealthy,
OpenrestyMessage: "port 80 already allocated",
})
@@ -381,24 +381,24 @@ func TestHeartbeatNodeResolvesGeoMetadataFromIPWhenNotManuallyOverridden(t *test
})
node := &model.Node{
NodeID: "node-geo-auto",
Name: "geo-auto",
IP: "10.0.0.8",
AgentToken: "agent-token",
AgentVersion: "v0.4.0",
NginxVersion: "1.27.1.2",
Status: NodeStatusOnline,
NodeID: "node-geo-auto",
Name: "geo-auto",
IP: "10.0.0.8",
AccessToken: "agent-token",
Version: "v0.4.0",
ExtVersion: "1.27.1.2",
Status: NodeStatusOnline,
}
if err := node.Insert(); err != nil {
t.Fatalf("failed to seed node: %v", err)
}
resp, err := HeartbeatNode(node, AgentNodePayload{
NodeID: node.NodeID,
Name: node.Name,
IP: "8.8.8.8",
AgentVersion: node.AgentVersion,
NginxVersion: node.NginxVersion,
NodeID: node.NodeID,
Name: node.Name,
IP: "8.8.8.8",
Version: node.Version,
ExtVersion: node.ExtVersion,
})
if err != nil {
t.Fatalf("expected heartbeat to succeed: %v", err)
@@ -430,9 +430,9 @@ func TestHeartbeatNodePreservesManualGeoOverride(t *testing.T) {
GeoLatitude: &latitude,
GeoLongitude: &longitude,
GeoManualOverride: true,
AgentToken: "agent-token",
AgentVersion: "v0.4.0",
NginxVersion: "1.27.1.2",
AccessToken: "agent-token",
Version: "v0.4.0",
ExtVersion: "1.27.1.2",
Status: NodeStatusOnline,
}
if err := node.Insert(); err != nil {
@@ -440,11 +440,11 @@ func TestHeartbeatNodePreservesManualGeoOverride(t *testing.T) {
}
resp, err := HeartbeatNode(node, AgentNodePayload{
NodeID: node.NodeID,
Name: node.Name,
IP: "8.8.8.8",
AgentVersion: node.AgentVersion,
NginxVersion: node.NginxVersion,
NodeID: node.NodeID,
Name: node.Name,
IP: "8.8.8.8",
Version: node.Version,
ExtVersion: node.ExtVersion,
})
if err != nil {
t.Fatalf("expected heartbeat to succeed: %v", err)
@@ -465,9 +465,9 @@ func TestHeartbeatNodePreservesManualIPOverride(t *testing.T) {
Name: "ip-manual",
IP: "203.0.113.10",
IPManualOverride: true,
AgentToken: "agent-token",
AgentVersion: "v0.4.0",
NginxVersion: "1.27.1.2",
AccessToken: "agent-token",
Version: "v0.4.0",
ExtVersion: "1.27.1.2",
Status: NodeStatusOnline,
}
if err := node.Insert(); err != nil {
@@ -478,8 +478,8 @@ func TestHeartbeatNodePreservesManualIPOverride(t *testing.T) {
NodeID: node.NodeID,
Name: node.Name,
IP: "10.0.0.8",
AgentVersion: "v0.5.0",
NginxVersion: "1.27.1.3",
Version: "v0.5.0",
ExtVersion: "1.27.1.3",
OpenrestyStatus: OpenrestyStatusHealthy,
})
if err != nil {
@@ -488,7 +488,7 @@ func TestHeartbeatNodePreservesManualIPOverride(t *testing.T) {
if resp.Node.IP != "203.0.113.10" {
t.Fatalf("expected manual ip to be preserved, got %s", resp.Node.IP)
}
if resp.Node.AgentVersion != "v0.5.0" || resp.Node.NginxVersion != "1.27.1.3" {
if resp.Node.Version != "v0.5.0" || resp.Node.ExtVersion != "1.27.1.3" {
t.Fatalf("expected runtime metadata to update despite locked ip, got %+v", resp.Node)
}
@@ -505,24 +505,24 @@ func TestHeartbeatNodeUpdatesIPWhenManualOverrideDisabled(t *testing.T) {
setupServiceTestDB(t)
node := &model.Node{
NodeID: "node-ip-auto",
Name: "ip-auto",
IP: "10.0.0.8",
AgentToken: "agent-token",
AgentVersion: "v0.4.0",
NginxVersion: "1.27.1.2",
Status: NodeStatusOnline,
NodeID: "node-ip-auto",
Name: "ip-auto",
IP: "10.0.0.8",
AccessToken: "agent-token",
Version: "v0.4.0",
ExtVersion: "1.27.1.2",
Status: NodeStatusOnline,
}
if err := node.Insert(); err != nil {
t.Fatalf("failed to seed node: %v", err)
}
resp, err := HeartbeatNode(node, AgentNodePayload{
NodeID: node.NodeID,
Name: node.Name,
IP: "8.8.8.8",
AgentVersion: node.AgentVersion,
NginxVersion: node.NginxVersion,
NodeID: node.NodeID,
Name: node.Name,
IP: "8.8.8.8",
Version: node.Version,
ExtVersion: node.ExtVersion,
})
if err != nil {
t.Fatalf("expected heartbeat to succeed: %v", err)
@@ -557,11 +557,11 @@ func TestUpdateNodeCanLockAndUnlockManualIP(t *testing.T) {
t.Fatalf("failed to reload node: %v", err)
}
if _, err = HeartbeatNode(stored, AgentNodePayload{
NodeID: stored.NodeID,
Name: stored.Name,
IP: "8.8.8.8",
AgentVersion: "v0.5.0",
NginxVersion: "1.27.1.3",
NodeID: stored.NodeID,
Name: stored.Name,
IP: "8.8.8.8",
Version: "v0.5.0",
ExtVersion: "1.27.1.3",
}); err != nil {
t.Fatalf("expected heartbeat to succeed: %v", err)
}
@@ -591,11 +591,11 @@ func TestUpdateNodeCanLockAndUnlockManualIP(t *testing.T) {
t.Fatalf("failed to reload unlocked node: %v", err)
}
if _, err = HeartbeatNode(unlockedStored, AgentNodePayload{
NodeID: unlockedStored.NodeID,
Name: unlockedStored.Name,
IP: "8.8.4.4",
AgentVersion: "v0.5.1",
NginxVersion: "1.27.1.4",
NodeID: unlockedStored.NodeID,
Name: unlockedStored.Name,
IP: "8.8.4.4",
Version: "v0.5.1",
ExtVersion: "1.27.1.4",
}); err != nil {
t.Fatalf("expected heartbeat to succeed after unlock: %v", err)
}
@@ -666,25 +666,25 @@ func TestListNodeViewsIncludesLatestApplyLogsForMultipleNodes(t *testing.T) {
now := time.Now()
nodes := []*model.Node{
{
NodeID: "node-a",
Name: "edge-a",
IP: "10.0.0.11",
GeoName: "Shanghai",
AgentToken: "token-a",
AgentVersion: "v0.5.0",
NginxVersion: "1.27.1.2",
Status: NodeStatusOnline,
LastSeenAt: now,
NodeID: "node-a",
Name: "edge-a",
IP: "10.0.0.11",
GeoName: "Shanghai",
AccessToken: "token-a",
Version: "v0.5.0",
ExtVersion: "1.27.1.2",
Status: NodeStatusOnline,
LastSeenAt: now,
},
{
NodeID: "node-b",
Name: "edge-b",
IP: "10.0.0.12",
AgentToken: "token-b",
AgentVersion: "v0.5.0",
NginxVersion: "1.27.1.2",
Status: NodeStatusOnline,
LastSeenAt: now,
NodeID: "node-b",
Name: "edge-b",
IP: "10.0.0.12",
AccessToken: "token-b",
Version: "v0.5.0",
ExtVersion: "1.27.1.2",
Status: NodeStatusOnline,
LastSeenAt: now,
},
}
for _, node := range nodes {
@@ -732,8 +732,8 @@ func TestCollectNodeHeartbeatChangesOnlyReturnsChangedFields(t *testing.T) {
before := &model.Node{
Name: "edge-1",
IP: "10.0.0.8",
AgentVersion: "v0.5.0",
NginxVersion: "1.27.1.2",
Version: "v0.5.0",
ExtVersion: "1.27.1.2",
OpenrestyStatus: OpenrestyStatusHealthy,
OpenrestyMessage: "",
Status: NodeStatusOnline,
@@ -748,8 +748,8 @@ func TestCollectNodeHeartbeatChangesOnlyReturnsChangedFields(t *testing.T) {
after := &model.Node{
Name: "edge-1",
IP: "10.0.0.8",
AgentVersion: "v0.5.0",
NginxVersion: "1.27.1.2",
Version: "v0.5.0",
ExtVersion: "1.27.1.2",
OpenrestyStatus: OpenrestyStatusHealthy,
OpenrestyMessage: "",
Status: NodeStatusOnline,
@@ -790,14 +790,14 @@ func TestListNodeViewsDoesNotPersistComputedStatus(t *testing.T) {
setupServiceTestDB(t)
node := &model.Node{
NodeID: "node-offline-view",
Name: "edge-offline",
IP: "10.0.0.21",
AgentToken: "token-offline",
AgentVersion: "v0.5.0",
NginxVersion: "1.27.1.2",
Status: NodeStatusOnline,
LastSeenAt: time.Now().Add(-common.NodeOfflineThreshold - time.Minute),
NodeID: "node-offline-view",
Name: "edge-offline",
IP: "10.0.0.21",
AccessToken: "token-offline",
Version: "v0.5.0",
ExtVersion: "1.27.1.2",
Status: NodeStatusOnline,
LastSeenAt: time.Now().Add(-common.NodeOfflineThreshold - time.Minute),
}
if err := node.Insert(); err != nil {
t.Fatalf("failed to insert node: %v", err)
@@ -868,24 +868,24 @@ func TestHeartbeatNodePersistsObservabilityPayload(t *testing.T) {
})
node := &model.Node{
NodeID: "node-observe-1",
Name: "observe-edge-1",
IP: "10.0.0.31",
AgentToken: "token-observe",
AgentVersion: "v0.6.0",
NginxVersion: "1.27.1.2",
Status: NodeStatusOnline,
NodeID: "node-observe-1",
Name: "observe-edge-1",
IP: "10.0.0.31",
AccessToken: "token-observe",
Version: "v0.6.0",
ExtVersion: "1.27.1.2",
Status: NodeStatusOnline,
}
if err := node.Insert(); err != nil {
t.Fatalf("failed to seed node: %v", err)
}
_, err := HeartbeatNode(node, AgentNodePayload{
NodeID: node.NodeID,
Name: node.Name,
IP: node.IP,
AgentVersion: node.AgentVersion,
NginxVersion: node.NginxVersion,
NodeID: node.NodeID,
Name: node.Name,
IP: node.IP,
Version: node.Version,
ExtVersion: node.ExtVersion,
Profile: &AgentNodeSystemProfile{
Hostname: "observe-edge-1",
OSName: "Ubuntu",
@@ -900,17 +900,16 @@ func TestHeartbeatNodePersistsObservabilityPayload(t *testing.T) {
ReportedAtUnix: time.Now().Add(-time.Minute).Unix(),
},
Snapshot: &AgentNodeMetricSnapshot{
CapturedAtUnix: time.Now().Add(-30 * time.Second).Unix(),
CPUUsagePercent: 42.5,
MemoryUsedBytes: 8 * 1024 * 1024 * 1024,
MemoryTotalBytes: 16 * 1024 * 1024 * 1024,
StorageUsedBytes: 70 * 1024 * 1024 * 1024,
StorageTotalBytes: 200 * 1024 * 1024 * 1024,
DiskReadBytes: 1024,
DiskWriteBytes: 2048,
NetworkRxBytes: 4096,
NetworkTxBytes: 8192,
OpenrestyConnections: 128,
CapturedAtUnix: time.Now().Add(-30 * time.Second).Unix(),
CPUUsagePercent: 42.5,
MemoryUsedBytes: 8 * 1024 * 1024 * 1024,
MemoryTotalBytes: 16 * 1024 * 1024 * 1024,
StorageUsedBytes: 70 * 1024 * 1024 * 1024,
StorageTotalBytes: 200 * 1024 * 1024 * 1024,
DiskReadBytes: 1024,
DiskWriteBytes: 2048,
NetworkRxBytes: 4096,
NetworkTxBytes: 8192,
},
TrafficReport: &AgentNodeTrafficReport{
WindowStartedAtUnix: time.Now().Add(-time.Minute).Unix(),
@@ -966,7 +965,7 @@ func TestHeartbeatNodePersistsObservabilityPayload(t *testing.T) {
if err != nil {
t.Fatalf("expected node snapshots query to succeed: %v", err)
}
if len(snapshots) != 1 || snapshots[0].OpenrestyConnections != 128 {
if len(snapshots) != 1 {
t.Fatalf("unexpected metric snapshots: %+v", snapshots)
}
@@ -1021,13 +1020,13 @@ func TestHeartbeatNodePersistsBufferedObservabilityPayload(t *testing.T) {
})
node := &model.Node{
NodeID: "node-observe-buffered",
Name: "observe-buffered-edge",
IP: "10.0.0.32",
AgentToken: "token-observe-buffered",
AgentVersion: "v0.6.0",
NginxVersion: "1.27.1.2",
Status: NodeStatusOnline,
NodeID: "node-observe-buffered",
Name: "observe-buffered-edge",
IP: "10.0.0.32",
AccessToken: "token-observe-buffered",
Version: "v0.6.0",
ExtVersion: "1.27.1.2",
Status: NodeStatusOnline,
}
if err := node.Insert(); err != nil {
t.Fatalf("failed to seed node: %v", err)
@@ -1035,11 +1034,11 @@ func TestHeartbeatNodePersistsBufferedObservabilityPayload(t *testing.T) {
now := time.Now().UTC()
_, err := HeartbeatNode(node, AgentNodePayload{
NodeID: node.NodeID,
Name: node.Name,
IP: node.IP,
AgentVersion: node.AgentVersion,
NginxVersion: node.NginxVersion,
NodeID: node.NodeID,
Name: node.Name,
IP: node.IP,
Version: node.Version,
ExtVersion: node.ExtVersion,
Snapshot: &AgentNodeMetricSnapshot{
CapturedAtUnix: now.Unix(),
CPUUsagePercent: 25,
@@ -1124,11 +1123,11 @@ func TestHeartbeatNodePersistsBufferedObservabilityPayload(t *testing.T) {
}
_, err = HeartbeatNode(node, AgentNodePayload{
NodeID: node.NodeID,
Name: node.Name,
IP: node.IP,
AgentVersion: node.AgentVersion,
NginxVersion: node.NginxVersion,
NodeID: node.NodeID,
Name: node.Name,
IP: node.IP,
Version: node.Version,
ExtVersion: node.ExtVersion,
BufferedObservability: []AgentBufferedObservabilityRecord{
{
WindowStartedAtUnix: now.Add(-2 * time.Minute).Unix(),
@@ -1196,13 +1195,13 @@ func TestListAccessLogsUsesPagination(t *testing.T) {
setupServiceTestDB(t)
node := &model.Node{
NodeID: "node-access-log-page",
Name: "access-log-edge",
IP: "10.0.0.40",
AgentToken: "token-access-log-page",
AgentVersion: "v0.6.0",
NginxVersion: "1.27.1.2",
Status: NodeStatusOnline,
NodeID: "node-access-log-page",
Name: "access-log-edge",
IP: "10.0.0.40",
AccessToken: "token-access-log-page",
Version: "v0.6.0",
ExtVersion: "1.27.1.2",
Status: NodeStatusOnline,
}
if err := node.Insert(); err != nil {
t.Fatalf("failed to seed node: %v", err)
@@ -1281,24 +1280,24 @@ func TestHeartbeatNodeResolvesMissingHealthEvents(t *testing.T) {
setupServiceTestDB(t)
node := &model.Node{
NodeID: "node-event-1",
Name: "event-edge-1",
IP: "10.0.0.41",
AgentToken: "token-event",
AgentVersion: "v0.6.0",
NginxVersion: "1.27.1.2",
Status: NodeStatusOnline,
NodeID: "node-event-1",
Name: "event-edge-1",
IP: "10.0.0.41",
AccessToken: "token-event",
Version: "v0.6.0",
ExtVersion: "1.27.1.2",
Status: NodeStatusOnline,
}
if err := node.Insert(); err != nil {
t.Fatalf("failed to seed node: %v", err)
}
_, err := HeartbeatNode(node, AgentNodePayload{
NodeID: node.NodeID,
Name: node.Name,
IP: node.IP,
AgentVersion: node.AgentVersion,
NginxVersion: node.NginxVersion,
NodeID: node.NodeID,
Name: node.Name,
IP: node.IP,
Version: node.Version,
ExtVersion: node.ExtVersion,
HealthEvents: []AgentNodeHealthEvent{
{
EventType: "sync_error",
@@ -1316,8 +1315,8 @@ func TestHeartbeatNodeResolvesMissingHealthEvents(t *testing.T) {
NodeID: node.NodeID,
Name: node.Name,
IP: node.IP,
AgentVersion: node.AgentVersion,
NginxVersion: node.NginxVersion,
Version: node.Version,
ExtVersion: node.ExtVersion,
HealthEvents: []AgentNodeHealthEvent{},
})
if err != nil {
@@ -1345,13 +1344,13 @@ func TestGetNodeObservability(t *testing.T) {
setupServiceTestDB(t)
node := &model.Node{
NodeID: "node-observability-query",
Name: "query-edge",
IP: "10.0.0.61",
AgentToken: "token-query",
AgentVersion: "v0.6.0",
NginxVersion: "1.27.1.2",
Status: NodeStatusOnline,
NodeID: "node-observability-query",
Name: "query-edge",
IP: "10.0.0.61",
AccessToken: "token-query",
Version: "v0.6.0",
ExtVersion: "1.27.1.2",
Status: NodeStatusOnline,
}
if err := node.Insert(); err != nil {
t.Fatalf("failed to insert node: %v", err)
@@ -1377,8 +1376,6 @@ func TestGetNodeObservability(t *testing.T) {
DiskWriteBytes: 0,
NetworkRxBytes: 2048,
NetworkTxBytes: 4096,
OpenrestyRxBytes: 8192,
OpenrestyTxBytes: 16384,
}).Insert(); err != nil {
t.Fatalf("failed to insert node metric baseline snapshot: %v", err)
}
@@ -1394,8 +1391,6 @@ func TestGetNodeObservability(t *testing.T) {
DiskWriteBytes: 2048,
NetworkRxBytes: 4096,
NetworkTxBytes: 8192,
OpenrestyRxBytes: 16384,
OpenrestyTxBytes: 32768,
}).Insert(); err != nil {
t.Fatalf("failed to insert node metric snapshot: %v", err)
}
@@ -1453,7 +1448,7 @@ func TestGetNodeObservability(t *testing.T) {
if view.Trends.Traffic24h[len(view.Trends.Traffic24h)-1].RequestCount != 123 {
t.Fatalf("unexpected traffic trend tail: %+v", view.Trends.Traffic24h[len(view.Trends.Traffic24h)-1])
}
if view.Trends.Network24h[len(view.Trends.Network24h)-1].OpenrestyTxBytes != 32768 {
if view.Trends.Network24h[len(view.Trends.Network24h)-1].NetworkTxBytes != 8192 {
t.Fatalf("unexpected network trend tail: %+v", view.Trends.Network24h[len(view.Trends.Network24h)-1])
}
if view.Trends.DiskIO24h[len(view.Trends.DiskIO24h)-1].DiskWriteBytes != 2048 {
@@ -1477,13 +1472,13 @@ func TestGetNodeObservabilityAllowsMissingProfile(t *testing.T) {
setupServiceTestDB(t)
node := &model.Node{
NodeID: "node-observability-empty",
Name: "empty-edge",
IP: "10.0.0.62",
AgentToken: "token-empty",
AgentVersion: "v0.6.0",
NginxVersion: "1.27.1.2",
Status: NodeStatusOnline,
NodeID: "node-observability-empty",
Name: "empty-edge",
IP: "10.0.0.62",
AccessToken: "token-empty",
Version: "v0.6.0",
ExtVersion: "1.27.1.2",
Status: NodeStatusOnline,
}
if err := node.Insert(); err != nil {
t.Fatalf("failed to insert node: %v", err)
@@ -1508,13 +1503,13 @@ func TestCleanupNodeHealthEvents(t *testing.T) {
setupServiceTestDB(t)
node := &model.Node{
NodeID: "node-health-cleanup",
Name: "health-cleanup-edge",
IP: "10.0.0.72",
AgentToken: "token-health-cleanup",
AgentVersion: "v0.6.0",
NginxVersion: "1.27.1.2",
Status: NodeStatusOnline,
NodeID: "node-health-cleanup",
Name: "health-cleanup-edge",
IP: "10.0.0.72",
AccessToken: "token-health-cleanup",
Version: "v0.6.0",
ExtVersion: "1.27.1.2",
Status: NodeStatusOnline,
}
if err := node.Insert(); err != nil {
t.Fatalf("failed to insert node: %v", err)
@@ -1586,9 +1581,9 @@ func TestGetDashboardOverview(t *testing.T) {
Name: "edge-a",
IP: "10.0.0.71",
GeoName: "Shanghai",
AgentToken: "token-a",
AgentVersion: "v0.6.0",
NginxVersion: "1.27.1.2",
AccessToken: "token-a",
Version: "v0.6.0",
ExtVersion: "1.27.1.2",
OpenrestyStatus: OpenrestyStatusHealthy,
Status: NodeStatusOnline,
CurrentVersion: "20260314-001",
@@ -1599,9 +1594,9 @@ func TestGetDashboardOverview(t *testing.T) {
Name: "edge-b",
IP: "10.0.0.72",
GeoName: "San Francisco",
AgentToken: "token-b",
AgentVersion: "v0.6.0",
NginxVersion: "1.27.1.2",
AccessToken: "token-b",
Version: "v0.6.0",
ExtVersion: "1.27.1.2",
OpenrestyStatus: OpenrestyStatusUnhealthy,
Status: NodeStatusOnline,
CurrentVersion: "20260313-001",
@@ -1626,8 +1621,6 @@ func TestGetDashboardOverview(t *testing.T) {
DiskWriteBytes: 0,
NetworkRxBytes: 100,
NetworkTxBytes: 150,
OpenrestyRxBytes: 300,
OpenrestyTxBytes: 450,
}).Insert(); err != nil {
t.Fatalf("failed to insert node a baseline metric snapshot: %v", err)
}
@@ -1643,8 +1636,6 @@ func TestGetDashboardOverview(t *testing.T) {
DiskWriteBytes: 150,
NetworkRxBytes: 300,
NetworkTxBytes: 500,
OpenrestyRxBytes: 700,
OpenrestyTxBytes: 900,
}).Insert(); err != nil {
t.Fatalf("failed to insert node a metric snapshot: %v", err)
}
@@ -1659,9 +1650,7 @@ func TestGetDashboardOverview(t *testing.T) {
DiskReadBytes: 0,
DiskWriteBytes: 0,
NetworkRxBytes: 200,
NetworkTxBytes: 300,
OpenrestyRxBytes: 500,
OpenrestyTxBytes: 700,
NetworkTxBytes: 400,
}).Insert(); err != nil {
t.Fatalf("failed to insert node b baseline metric snapshot: %v", err)
}
@@ -1676,9 +1665,7 @@ func TestGetDashboardOverview(t *testing.T) {
DiskReadBytes: 200,
DiskWriteBytes: 400,
NetworkRxBytes: 600,
NetworkTxBytes: 900,
OpenrestyRxBytes: 1200,
OpenrestyTxBytes: 1600,
NetworkTxBytes: 800,
}).Insert(); err != nil {
t.Fatalf("failed to insert node b metric snapshot: %v", err)
}
@@ -1785,7 +1772,7 @@ func TestGetDashboardOverview(t *testing.T) {
if view.Trends.Traffic24h[len(view.Trends.Traffic24h)-1].RequestCount != 900 {
t.Fatalf("unexpected dashboard traffic trend tail: %+v", view.Trends.Traffic24h[len(view.Trends.Traffic24h)-1])
}
if view.Trends.Network24h[len(view.Trends.Network24h)-1].OpenrestyRxBytes != 1900 {
if view.Trends.Network24h[len(view.Trends.Network24h)-1].NetworkRxBytes != 900 {
t.Fatalf("unexpected dashboard network trend tail: %+v", view.Trends.Network24h[len(view.Trends.Network24h)-1])
}
if view.Trends.DiskIO24h[len(view.Trends.DiskIO24h)-1].DiskWriteBytes != 550 {