fix(proxy): trim mode and worker identifiers
Co-Authored-By: Virgil <virgil@lethean.io>
This commit is contained in:
parent
01a0cc5907
commit
82b2375058
2 changed files with 36 additions and 3 deletions
|
|
@ -55,3 +55,36 @@ func TestConfig_Validate_NoEnabledPool_Good(t *testing.T) {
|
||||||
t.Fatalf("expected config with no enabled pools to be valid, got error: %v", result.Error)
|
t.Fatalf("expected config with no enabled pools to be valid, got error: %v", result.Error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestProxy_New_WhitespaceMode_Good(t *testing.T) {
|
||||||
|
originalFactory, hadFactory := splitterFactoryForMode("nicehash")
|
||||||
|
if hadFactory {
|
||||||
|
t.Cleanup(func() {
|
||||||
|
RegisterSplitterFactory("nicehash", originalFactory)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
called := false
|
||||||
|
RegisterSplitterFactory("nicehash", func(*Config, *EventBus) Splitter {
|
||||||
|
called = true
|
||||||
|
return &noopSplitter{}
|
||||||
|
})
|
||||||
|
|
||||||
|
cfg := &Config{
|
||||||
|
Mode: " nicehash ",
|
||||||
|
Workers: WorkersByRigID,
|
||||||
|
Bind: []BindAddr{{Host: "0.0.0.0", Port: 3333}},
|
||||||
|
Pools: []PoolConfig{{URL: "pool.example:3333", Enabled: true}},
|
||||||
|
}
|
||||||
|
|
||||||
|
p, result := New(cfg)
|
||||||
|
if !result.OK {
|
||||||
|
t.Fatalf("expected whitespace-padded mode to remain valid, got error: %v", result.Error)
|
||||||
|
}
|
||||||
|
if !called {
|
||||||
|
t.Fatalf("expected trimmed mode lookup to invoke the registered splitter factory")
|
||||||
|
}
|
||||||
|
if _, ok := p.splitter.(*noopSplitter); !ok {
|
||||||
|
t.Fatalf("expected test splitter to be wired, got %#v", p.splitter)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -46,13 +46,13 @@ var splitterFactoriesByMode = map[string]func(*Config, *EventBus) Splitter{}
|
||||||
func RegisterSplitterFactory(mode string, factory func(*Config, *EventBus) Splitter) {
|
func RegisterSplitterFactory(mode string, factory func(*Config, *EventBus) Splitter) {
|
||||||
splitterFactoriesMu.Lock()
|
splitterFactoriesMu.Lock()
|
||||||
defer splitterFactoriesMu.Unlock()
|
defer splitterFactoriesMu.Unlock()
|
||||||
splitterFactoriesByMode[strings.ToLower(mode)] = factory
|
splitterFactoriesByMode[strings.ToLower(strings.TrimSpace(mode))] = factory
|
||||||
}
|
}
|
||||||
|
|
||||||
func splitterFactoryForMode(mode string) (func(*Config, *EventBus) Splitter, bool) {
|
func splitterFactoryForMode(mode string) (func(*Config, *EventBus) Splitter, bool) {
|
||||||
splitterFactoriesMu.RLock()
|
splitterFactoriesMu.RLock()
|
||||||
defer splitterFactoriesMu.RUnlock()
|
defer splitterFactoriesMu.RUnlock()
|
||||||
factory, ok := splitterFactoriesByMode[strings.ToLower(mode)]
|
factory, ok := splitterFactoriesByMode[strings.ToLower(strings.TrimSpace(mode))]
|
||||||
return factory, ok
|
return factory, ok
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -119,7 +119,7 @@ func isValidMode(mode string) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
func isValidWorkersMode(mode WorkersMode) bool {
|
func isValidWorkersMode(mode WorkersMode) bool {
|
||||||
switch mode {
|
switch WorkersMode(strings.TrimSpace(string(mode))) {
|
||||||
case WorkersByRigID, WorkersByUser, WorkersByPass, WorkersByAgent, WorkersByIP, WorkersDisabled:
|
case WorkersByRigID, WorkersByUser, WorkersByPass, WorkersByAgent, WorkersByIP, WorkersDisabled:
|
||||||
return true
|
return true
|
||||||
default:
|
default:
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue