chore: emulator sip_gateway, Makefile targets, full README documentation
- Emulator: add sip_gateway field to all scenarios (auto-trunk creation) - Makefile: build-agent, build-siptest, emulate-*, siptest-* targets - README: full documentation with agent section, production deployment - Project structure update with all components
This commit is contained in:
+15
-9
@@ -37,6 +37,7 @@ type nodeMetric struct {
|
||||
IdleCPU float64 `json:"idle_cpu"`
|
||||
LoadAvg float64 `json:"load_avg"`
|
||||
CallFailureRate float64 `json:"call_failure_rate"`
|
||||
SIPGateway string `json:"sip_gateway,omitempty"`
|
||||
}
|
||||
|
||||
// --- Спецификация значения (фиксированное или случайный диапазон) ---
|
||||
@@ -63,13 +64,14 @@ func (v valueSpec) get() float64 {
|
||||
// --- Конфигурация ноды в эмуляторе ---
|
||||
|
||||
type nodeSpec struct {
|
||||
nodeID string
|
||||
status valueSpec // строка: ok / down
|
||||
calls valueSpec
|
||||
maxCalls float64 // фиксированное
|
||||
idleCPU valueSpec
|
||||
loadAvg valueSpec
|
||||
failRate valueSpec
|
||||
nodeID string
|
||||
status valueSpec // строка: ok / down
|
||||
calls valueSpec
|
||||
maxCalls float64 // фиксированное
|
||||
idleCPU valueSpec
|
||||
loadAvg valueSpec
|
||||
failRate valueSpec
|
||||
sipGateway string // SIP-адрес для авто-создания транка
|
||||
}
|
||||
|
||||
func (ns *nodeSpec) generate() nodeMetric {
|
||||
@@ -82,6 +84,7 @@ func (ns *nodeSpec) generate() nodeMetric {
|
||||
IdleCPU: ns.idleCPU.get(),
|
||||
LoadAvg: ns.loadAvg.get(),
|
||||
CallFailureRate: ns.failRate.get(),
|
||||
SIPGateway: ns.sipGateway,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -100,16 +103,19 @@ func scenarioNormal() []nodeSpec {
|
||||
nodeID: "pbx-01", status: fixed(1),
|
||||
calls: rrange(10, 100), maxCalls: 250,
|
||||
idleCPU: rrange(40, 95), loadAvg: rrange(0.1, 1.0), failRate: rrange(0, 2),
|
||||
sipGateway: "sip:pbx-01.lan:5060",
|
||||
},
|
||||
{
|
||||
nodeID: "pbx-02", status: fixed(1),
|
||||
calls: rrange(50, 200), maxCalls: 250,
|
||||
idleCPU: rrange(15, 45), loadAvg: rrange(0.5, 2.0), failRate: rrange(1, 8),
|
||||
sipGateway: "sip:pbx-02.lan:5060",
|
||||
},
|
||||
{
|
||||
nodeID: "pbx-03", status: fixed(1),
|
||||
calls: rrange(5, 60), maxCalls: 250,
|
||||
idleCPU: rrange(60, 90), loadAvg: rrange(0.05, 0.5), failRate: rrange(0, 1),
|
||||
sipGateway: "sip:pbx-03.lan:5060",
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -327,6 +333,6 @@ func publish(nc *natsgo.Conn, m nodeMetric) {
|
||||
log.Printf("[emulator] ошибка публикации %s: %v", m.NodeID, err)
|
||||
return
|
||||
}
|
||||
log.Printf("[emulator] → %s: calls=%d/%d idle=%.0f%% load=%.2f fail=%.1f%% status=%s",
|
||||
m.NodeID, m.ActiveCalls, m.MaxCalls, m.IdleCPU, m.LoadAvg, m.CallFailureRate, m.Status)
|
||||
log.Printf("[emulator] → %s: calls=%d/%d idle=%.0f%% load=%.2f fail=%.1f%% status=%s gw=%s",
|
||||
m.NodeID, m.ActiveCalls, m.MaxCalls, m.IdleCPU, m.LoadAvg, m.CallFailureRate, m.Status, m.SIPGateway)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user