Skip to content

Commit 087550b

Browse files
committed
Cleanup, optimize mockservers, upgrade internal requirements
1 parent 42d1cb2 commit 087550b

7 files changed

Lines changed: 186 additions & 81 deletions

File tree

.gitignore

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
11
.idea/
2-
rcon-local.yaml
3-
rcon-cli
4-
rcon-cli.exe
5-
build.sh
2+
.vscode/
63
vendor/
7-
Gopkg.lock
84
release/
95
logs/
6+
*local.yaml
7+
rcon-cli
8+
rcon-cli.exe
109
*.log
11-
rcon-temp.yaml
12-
temp/

CHANGELOG.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,11 @@ All notable changes to this project will be documented in this file.
44
**ATTN**: This project uses [semantic versioning](http://semver.org/).
55

66
## [Unreleased]
7+
8+
## [v0.8.1] - 2020-11-17
79
### Added
8-
- Added tests for real servers. Servers list: `Project Zomboid`, `7 Days to Die`, `Rust`.
10+
- Added tests for real servers. Servers list: `Project Zomboid`, `7 Days to Die`, `Rust`.
11+
- Added removing part of the constantly repeated data from `7 Days to Die` response ([details](https://github.com/gorcon/telnet/issues/1)).
912

1013
## [v0.8.0-beta.2] - 2020-10-18
1114
### Added
@@ -71,7 +74,8 @@ than entry in configuration file.
7174
### Added
7275
- Initial implementation.
7376

74-
[Unreleased]: https://github.com/gorcon/rcon-cli/compare/v0.8.0-beta.2...HEAD
77+
[Unreleased]: https://github.com/gorcon/rcon-cli/compare/v0.8.1...HEAD
78+
[v0.8.1]: https://github.com/gorcon/rcon-cli/compare/v0.8.0-beta.2...v0.8.1
7579
[v0.8.0-beta.2]: https://github.com/gorcon/rcon-cli/compare/v0.8.0-beta...v0.8.0-beta.2
7680
[v0.8.0-beta]: https://github.com/gorcon/rcon-cli/compare/v0.7.0...v0.8.0-beta
7781
[v0.7.0]: https://github.com/gorcon/rcon-cli/compare/v0.6.0...v0.7.0

go.mod

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@ go 1.15
44

55
require (
66
github.com/gorcon/rcon v1.2.4
7-
github.com/gorcon/telnet v1.0.1
7+
github.com/gorcon/telnet v1.1.0
88
github.com/gorcon/websocket v1.0.1
9+
github.com/gorilla/websocket v1.4.2
910
github.com/stretchr/testify v1.6.1
1011
github.com/urfave/cli v1.22.4
1112
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8
55
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
66
github.com/gorcon/rcon v1.2.4 h1:X+2mW0yQeLqQiKGbFa69v0Qz/kEYl6Qu9ztSLmD17eA=
77
github.com/gorcon/rcon v1.2.4/go.mod h1:tR1u9kJLW1lKzOMLl9VpXT/JYN4efFtD3fSmmwSpOHc=
8-
github.com/gorcon/telnet v1.0.1 h1:Nj3G8OddlB/4z7ciMblLDm5DNUyHrqpB3VINeFKDZA0=
9-
github.com/gorcon/telnet v1.0.1/go.mod h1:KwU1iCwOxpp/G52AfvVsMxdSEA475k9tt9hMzQSx8Lc=
8+
github.com/gorcon/telnet v1.1.0 h1:z+UVtFcCG4vON2TwSxOZo6OuC7qPQ8C876RjWDghV5g=
9+
github.com/gorcon/telnet v1.1.0/go.mod h1:KwU1iCwOxpp/G52AfvVsMxdSEA475k9tt9hMzQSx8Lc=
1010
github.com/gorcon/websocket v1.0.1 h1:wPJzT4vOIDvvju5nMECxx2Gq6Apzs0CjRU8Pm1h73ro=
1111
github.com/gorcon/websocket v1.0.1/go.mod h1:FrkydxLIsmjR0a1ourSUrmqVfCbzueOMzgYkN7MaBnE=
1212
github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=

main_test.go

Lines changed: 42 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -140,29 +140,11 @@ func TestGetLogFile(t *testing.T) {
140140
}
141141

142142
func TestExecute(t *testing.T) {
143-
serverRCON, err := NewMockServerRCON()
144-
if err != nil {
145-
t.Fatal(err)
146-
}
147-
defer func() {
148-
assert.NoError(t, serverRCON.Close())
149-
close(serverRCON.errors)
150-
for err := range serverRCON.errors {
151-
assert.NoError(t, err)
152-
}
153-
}()
143+
serverRCON := MustNewMockServerRCON()
144+
defer serverRCON.MustClose()
154145

155-
serverTELNET, err := NewMockServerTELNET()
156-
if err != nil {
157-
t.Fatal(err)
158-
}
159-
defer func() {
160-
assert.NoError(t, serverTELNET.Close())
161-
close(serverTELNET.errors)
162-
for err := range serverTELNET.errors {
163-
assert.NoError(t, err)
164-
}
165-
}()
146+
serverTELNET := MustNewMockServerTELNET()
147+
defer serverTELNET.MustClose()
166148

167149
serverWebRCON := httptest.NewServer(MockHandlersWebRCON())
168150
defer serverWebRCON.Close()
@@ -322,7 +304,19 @@ func TestExecute(t *testing.T) {
322304

323305
t.Run("7dtd server", func(t *testing.T) {
324306
needle := func() string {
325-
n := `*** List of Commands ***
307+
n := `*** Generic Console Help ***
308+
To get further help on a specific topic or command type (without the brackets)
309+
help <topic / command>
310+
311+
Generic notation of command parameters:
312+
<param name> Required parameter
313+
<entityId / player name> Possible types of parameter values
314+
[param name] Optional parameter
315+
316+
*** List of Help Topics ***
317+
None yet
318+
319+
*** List of Commands ***
326320
admin => Manage user permission levels
327321
aiddebug => Toggles AIDirector debug output.
328322
audio => Watch audio stats
@@ -489,17 +483,8 @@ of your current perk levels in a CSV file next to it.
489483
}
490484

491485
func TestInteractive(t *testing.T) {
492-
server, err := NewMockServerRCON()
493-
if err != nil {
494-
t.Fatal(err)
495-
}
496-
defer func() {
497-
assert.NoError(t, server.Close())
498-
close(server.errors)
499-
for err := range server.errors {
500-
assert.NoError(t, err)
501-
}
502-
}()
486+
serverRCON := MustNewMockServerRCON()
487+
defer serverRCON.MustClose()
503488

504489
w := &bytes.Buffer{}
505490

@@ -508,17 +493,17 @@ func TestInteractive(t *testing.T) {
508493
var r bytes.Buffer
509494
r.WriteString(CommandQuit + "\n")
510495

511-
err = Interactive(&r, w, session.Session{Address: server.Addr(), Password: "fake"})
496+
err := Interactive(&r, w, session.Session{Address: serverRCON.Addr(), Password: "fake"})
512497
assert.Error(t, err)
513498
})
514499

515500
// Test get Interactive address.
516501
t.Run("interactive get address", func(t *testing.T) {
517502
var r bytes.Buffer
518-
r.WriteString(server.Addr() + "\n")
503+
r.WriteString(serverRCON.Addr() + "\n")
519504
r.WriteString(CommandQuit + "\n")
520505

521-
err = Interactive(&r, w, session.Session{Address: "", Password: MockPasswordRCON})
506+
err := Interactive(&r, w, session.Session{Address: "", Password: MockPasswordRCON})
522507
assert.NoError(t, err)
523508
})
524509

@@ -528,7 +513,7 @@ func TestInteractive(t *testing.T) {
528513
r.WriteString(MockPasswordRCON + "\n")
529514
r.WriteString(CommandQuit + "\n")
530515

531-
err = Interactive(&r, w, session.Session{Address: server.Addr(), Password: ""})
516+
err := Interactive(&r, w, session.Session{Address: serverRCON.Addr(), Password: ""})
532517
assert.NoError(t, err)
533518
})
534519

@@ -539,7 +524,7 @@ func TestInteractive(t *testing.T) {
539524
r.WriteString("unknown command" + "\n")
540525
r.WriteString(CommandQuit + "\n")
541526

542-
err = Interactive(r, w, session.Session{Address: server.Addr(), Password: MockPasswordRCON})
527+
err := Interactive(r, w, session.Session{Address: serverRCON.Addr(), Password: MockPasswordRCON})
543528
assert.NoError(t, err)
544529
})
545530

@@ -550,23 +535,14 @@ func TestInteractive(t *testing.T) {
550535
r.WriteString("unknown command" + "\n")
551536
r.WriteString(CommandQuit + "\n")
552537

553-
err = Interactive(r, w, session.Session{Address: server.Addr(), Password: MockPasswordTELNET, Type: session.ProtocolTELNET})
538+
err := Interactive(r, w, session.Session{Address: serverRCON.Addr(), Password: MockPasswordTELNET, Type: session.ProtocolTELNET})
554539
assert.NoError(t, err)
555540
})
556541
}
557542

558543
func TestNewApp(t *testing.T) {
559-
server, err := NewMockServerRCON()
560-
if err != nil {
561-
t.Fatal(err)
562-
}
563-
defer func() {
564-
assert.NoError(t, server.Close())
565-
close(server.errors)
566-
for err := range server.errors {
567-
assert.NoError(t, err)
568-
}
569-
}()
544+
serverRCON := MustNewMockServerRCON()
545+
defer serverRCON.MustClose()
570546

571547
// Test getting address and password from args. Config ang log are not used.
572548
t.Run("getting address and password from args", func(t *testing.T) {
@@ -575,21 +551,24 @@ func TestNewApp(t *testing.T) {
575551

576552
app := NewApp(r, w)
577553
args := os.Args[0:1]
578-
args = append(args, "-a="+server.Addr())
554+
args = append(args, "-a="+serverRCON.Addr())
579555
args = append(args, "-p="+MockPasswordRCON)
580556
args = append(args, "-c="+MockCommandHelpRCON)
581557

582-
err = app.Run(args)
558+
err := app.Run(args)
583559
assert.NoError(t, err)
584560
})
585561

586562
// Test getting address and password from config. Log is not used.
587563
t.Run("getting address and password from args with log", func(t *testing.T) {
588564
var configFileName = "rcon-temp.yaml"
589-
err := createConfigFile(configFileName, server.Addr(), MockPasswordRCON)
565+
err := createConfigFile(configFileName, serverRCON.Addr(), MockPasswordRCON)
590566
assert.NoError(t, err)
591567
defer func() {
592-
err := os.Remove(configFileName)
568+
err := os.Remove(DefaultTestLogName)
569+
assert.NoError(t, err)
570+
571+
err = os.Remove(configFileName)
593572
assert.NoError(t, err)
594573
}()
595574

@@ -614,7 +593,7 @@ func TestNewApp(t *testing.T) {
614593
args := os.Args[0:1]
615594
args = append(args, "-c="+MockCommandHelpRCON)
616595

617-
err = app.Run(args)
596+
err := app.Run(args)
618597
assert.Error(t, err)
619598
if !os.IsNotExist(err) {
620599
t.Errorf("unexpected error: %v", err)
@@ -624,7 +603,7 @@ func TestNewApp(t *testing.T) {
624603
// Test default config file is incorrect. Log is not used.
625604
t.Run("default config file is incorrect", func(t *testing.T) {
626605
var configFileName = "rcon-temp.yaml"
627-
err := createInvalidConfigFile(configFileName, server.Addr(), MockPasswordRCON)
606+
err := createInvalidConfigFile(configFileName, serverRCON.Addr(), MockPasswordRCON)
628607
assert.NoError(t, err)
629608
defer func() {
630609
err := os.Remove(configFileName)
@@ -654,7 +633,7 @@ func TestNewApp(t *testing.T) {
654633
args[0] = ""
655634
args = append(args, "-c="+MockCommandHelpRCON)
656635

657-
err = app.Run(args)
636+
err := app.Run(args)
658637
assert.EqualError(t, err, "address is not set: to set address add -a host:port")
659638
})
660639

@@ -667,10 +646,10 @@ func TestNewApp(t *testing.T) {
667646
args := os.Args[0:1]
668647
// Hack to use os.Args[0] in go run
669648
args[0] = ""
670-
args = append(args, "-a="+server.Addr())
649+
args = append(args, "-a="+serverRCON.Addr())
671650
args = append(args, "-c="+MockCommandHelpRCON)
672651

673-
err = app.Run(args)
652+
err := app.Run(args)
674653
assert.EqualError(t, err, "password is not set: to set password add -p password")
675654
})
676655

@@ -681,19 +660,19 @@ func TestNewApp(t *testing.T) {
681660

682661
app := NewApp(r, w)
683662
args := os.Args[0:1]
684-
args = append(args, "-a="+server.Addr())
663+
args = append(args, "-a="+serverRCON.Addr())
685664
args = append(args, "-p="+MockPasswordRCON)
686665

687666
r.WriteString(MockCommandHelpRCON + "\n")
688667
r.WriteString(CommandQuit + "\n")
689668

690-
err = app.Run(args)
669+
err := app.Run(args)
691670
assert.NoError(t, err)
692671
})
693672
}
694673

695674
// DefaultTestLogName sets the default log file name.
696-
const DefaultTestLogName = "rcon-default.log"
675+
const DefaultTestLogName = "rcon-test.log"
697676

698677
// createConfigFile creates config file with default section.
699678
func createConfigFile(name string, address string, password string) error {

0 commit comments

Comments
 (0)