mirror of
https://github.com/Team254/cheesy-arena-lite.git
synced 2026-03-09 21:56:50 -04:00
Refactor display registry to not broadcast all config changes to all displays.
This commit is contained in:
@@ -52,8 +52,8 @@ func TestDisplayFromUrl(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestDisplayToUrl(t *testing.T) {
|
||||
display := &Display{Id: "254", Nickname: "Test Nickname", Type: PitDisplay,
|
||||
Configuration: map[string]string{"f": "1", "z": "#fff", "a": "3", "c": "4"}}
|
||||
display := &Display{DisplayConfiguration: DisplayConfiguration{Id: "254", Nickname: "Test Nickname",
|
||||
Type: PitDisplay, Configuration: map[string]string{"f": "1", "z": "#fff", "a": "3", "c": "4"}}}
|
||||
assert.Equal(t, "/displays/pit?displayId=254&nickname=Test+Nickname&a=3&c=4&f=1&z=%23fff", display.ToUrl())
|
||||
}
|
||||
|
||||
@@ -62,51 +62,57 @@ func TestNextDisplayId(t *testing.T) {
|
||||
|
||||
assert.Equal(t, "100", arena.NextDisplayId())
|
||||
|
||||
display := &Display{Id: "100"}
|
||||
arena.RegisterDisplay(display)
|
||||
displayConfig := &DisplayConfiguration{Id: "100"}
|
||||
arena.RegisterDisplay(displayConfig, "")
|
||||
assert.Equal(t, "101", arena.NextDisplayId())
|
||||
}
|
||||
|
||||
func TestDisplayRegisterUnregister(t *testing.T) {
|
||||
arena := setupTestArena(t)
|
||||
|
||||
display := &Display{Id: "254", Nickname: "Placeholder", Type: PlaceholderDisplay, Configuration: map[string]string{}}
|
||||
arena.RegisterDisplay(display)
|
||||
displayConfig := &DisplayConfiguration{Id: "254", Nickname: "Placeholder", Type: PlaceholderDisplay,
|
||||
Configuration: map[string]string{}}
|
||||
arena.RegisterDisplay(displayConfig, "1.2.3.4")
|
||||
if assert.Contains(t, arena.Displays, "254") {
|
||||
assert.Equal(t, "Placeholder", arena.Displays["254"].Nickname)
|
||||
assert.Equal(t, PlaceholderDisplay, arena.Displays["254"].Type)
|
||||
assert.Equal(t, "Placeholder", arena.Displays["254"].DisplayConfiguration.Nickname)
|
||||
assert.Equal(t, PlaceholderDisplay, arena.Displays["254"].DisplayConfiguration.Type)
|
||||
assert.Equal(t, 1, arena.Displays["254"].ConnectionCount)
|
||||
assert.Equal(t, "1.2.3.4", arena.Displays["254"].IpAddress)
|
||||
}
|
||||
notifier := arena.Displays["254"].Notifier
|
||||
|
||||
// Register a second instance of the same display.
|
||||
display2 := &Display{Id: "254", Nickname: "Pit", Type: PitDisplay, Configuration: map[string]string{}}
|
||||
arena.RegisterDisplay(display2)
|
||||
displayConfig2 := &DisplayConfiguration{Id: "254", Nickname: "Pit", Type: PitDisplay,
|
||||
Configuration: map[string]string{}}
|
||||
arena.RegisterDisplay(displayConfig2, "2.3.4.5")
|
||||
if assert.Contains(t, arena.Displays, "254") {
|
||||
assert.Equal(t, "Pit", arena.Displays["254"].Nickname)
|
||||
assert.Equal(t, PitDisplay, arena.Displays["254"].Type)
|
||||
assert.Equal(t, "Pit", arena.Displays["254"].DisplayConfiguration.Nickname)
|
||||
assert.Equal(t, PitDisplay, arena.Displays["254"].DisplayConfiguration.Type)
|
||||
assert.Equal(t, 2, arena.Displays["254"].ConnectionCount)
|
||||
assert.Equal(t, "2.3.4.5", arena.Displays["254"].IpAddress)
|
||||
assert.Same(t, notifier, arena.Displays["254"].Notifier)
|
||||
}
|
||||
|
||||
// Register a second display.
|
||||
display3 := &Display{Id: "148", Type: FieldMonitorDisplay, Configuration: map[string]string{}}
|
||||
arena.RegisterDisplay(display3)
|
||||
displayConfig3 := &DisplayConfiguration{Id: "148", Type: FieldMonitorDisplay, Configuration: map[string]string{}}
|
||||
arena.RegisterDisplay(displayConfig3, "3.4.5.6")
|
||||
if assert.Contains(t, arena.Displays, "148") {
|
||||
assert.Equal(t, 1, arena.Displays["148"].ConnectionCount)
|
||||
}
|
||||
|
||||
// Update the first display.
|
||||
display4 := &Display{Id: "254", Nickname: "Alliance", Type: AllianceStationDisplay,
|
||||
displayConfig4 := DisplayConfiguration{Id: "254", Nickname: "Alliance", Type: AllianceStationDisplay,
|
||||
Configuration: map[string]string{"station": "B2"}}
|
||||
arena.UpdateDisplay(display4)
|
||||
arena.UpdateDisplay(displayConfig4)
|
||||
if assert.Contains(t, arena.Displays, "254") {
|
||||
assert.Equal(t, "Alliance", arena.Displays["254"].Nickname)
|
||||
assert.Equal(t, AllianceStationDisplay, arena.Displays["254"].Type)
|
||||
assert.Equal(t, "Alliance", arena.Displays["254"].DisplayConfiguration.Nickname)
|
||||
assert.Equal(t, AllianceStationDisplay, arena.Displays["254"].DisplayConfiguration.Type)
|
||||
assert.Equal(t, 2, arena.Displays["254"].ConnectionCount)
|
||||
}
|
||||
|
||||
// Disconnect both displays.
|
||||
arena.MarkDisplayDisconnected(display)
|
||||
arena.MarkDisplayDisconnected(display3)
|
||||
arena.MarkDisplayDisconnected(displayConfig.Id)
|
||||
arena.MarkDisplayDisconnected(displayConfig3.Id)
|
||||
if assert.Contains(t, arena.Displays, "148") {
|
||||
assert.Equal(t, 0, arena.Displays["148"].ConnectionCount)
|
||||
}
|
||||
@@ -118,8 +124,8 @@ func TestDisplayRegisterUnregister(t *testing.T) {
|
||||
func TestDisplayUpdateError(t *testing.T) {
|
||||
arena := setupTestArena(t)
|
||||
|
||||
display := &Display{Id: "254", Configuration: map[string]string{}}
|
||||
err := arena.UpdateDisplay(display)
|
||||
displayConfig := DisplayConfiguration{Id: "254", Configuration: map[string]string{}}
|
||||
err := arena.UpdateDisplay(displayConfig)
|
||||
if assert.NotNil(t, err) {
|
||||
assert.Contains(t, err.Error(), "doesn't exist")
|
||||
}
|
||||
@@ -129,41 +135,41 @@ func TestDisplayPurge(t *testing.T) {
|
||||
arena := setupTestArena(t)
|
||||
|
||||
// Unnamed placeholder gets immediately purged upon disconnection.
|
||||
display := &Display{Id: "254", Type: PlaceholderDisplay, Configuration: map[string]string{}}
|
||||
arena.RegisterDisplay(display)
|
||||
displayConfig := &DisplayConfiguration{Id: "254", Type: PlaceholderDisplay, Configuration: map[string]string{}}
|
||||
arena.RegisterDisplay(displayConfig, "1.2.3.4")
|
||||
assert.Contains(t, arena.Displays, "254")
|
||||
arena.MarkDisplayDisconnected(display)
|
||||
arena.MarkDisplayDisconnected(displayConfig.Id)
|
||||
assert.NotContains(t, arena.Displays, "254")
|
||||
|
||||
// Named placeholder does not get immediately purged upon disconnection.
|
||||
display.Nickname = "Bob"
|
||||
arena.RegisterDisplay(display)
|
||||
displayConfig.Nickname = "Bob"
|
||||
arena.RegisterDisplay(displayConfig, "1.2.3.4")
|
||||
assert.Contains(t, arena.Displays, "254")
|
||||
arena.MarkDisplayDisconnected(display)
|
||||
arena.MarkDisplayDisconnected(displayConfig.Id)
|
||||
assert.Contains(t, arena.Displays, "254")
|
||||
|
||||
// Unnamed configured display does not get immediately purged upon disconnection.
|
||||
display = &Display{Id: "1114", Type: FieldMonitorDisplay, Configuration: map[string]string{}}
|
||||
arena.RegisterDisplay(display)
|
||||
// Unnamed configured displayConfig does not get immediately purged upon disconnection.
|
||||
displayConfig = &DisplayConfiguration{Id: "1114", Type: FieldMonitorDisplay, Configuration: map[string]string{}}
|
||||
arena.RegisterDisplay(displayConfig, "1.2.3.4")
|
||||
assert.Contains(t, arena.Displays, "1114")
|
||||
arena.MarkDisplayDisconnected(display)
|
||||
arena.MarkDisplayDisconnected(displayConfig.Id)
|
||||
assert.Contains(t, arena.Displays, "1114")
|
||||
arena.purgeDisconnectedDisplays()
|
||||
assert.Contains(t, arena.Displays, "1114")
|
||||
|
||||
// Unnamed configured display gets purged by periodic task.
|
||||
arena.RegisterDisplay(display)
|
||||
// Unnamed configured displayConfig gets purged by periodic task.
|
||||
arena.RegisterDisplay(displayConfig, "1.2.3.4")
|
||||
assert.Contains(t, arena.Displays, "1114")
|
||||
arena.MarkDisplayDisconnected(display)
|
||||
arena.MarkDisplayDisconnected(displayConfig.Id)
|
||||
arena.Displays["1114"].lastConnectedTime = time.Now().Add(-displayPurgeTtlMin * time.Minute)
|
||||
arena.purgeDisconnectedDisplays()
|
||||
assert.NotContains(t, arena.Displays, "1114")
|
||||
|
||||
// Named configured display does not get purged by periodic task.
|
||||
display.Nickname = "Brunhilda"
|
||||
arena.RegisterDisplay(display)
|
||||
// Named configured displayConfig does not get purged by periodic task.
|
||||
displayConfig.Nickname = "Brunhilda"
|
||||
arena.RegisterDisplay(displayConfig, "1.2.3.4")
|
||||
assert.Contains(t, arena.Displays, "1114")
|
||||
arena.MarkDisplayDisconnected(display)
|
||||
arena.MarkDisplayDisconnected(displayConfig.Id)
|
||||
arena.Displays["1114"].lastConnectedTime = time.Now().Add(-displayPurgeTtlMin * time.Minute)
|
||||
arena.purgeDisconnectedDisplays()
|
||||
assert.Contains(t, arena.Displays, "1114")
|
||||
|
||||
Reference in New Issue
Block a user