diff --git a/socketserver/server/backend_test.go b/socketserver/server/backend_test.go
index b16782e4..540571f6 100644
--- a/socketserver/server/backend_test.go
+++ b/socketserver/server/backend_test.go
@@ -1,10 +1,10 @@
package server
import (
+ . "gopkg.in/check.v1"
+ "net/http"
"net/url"
"testing"
- "net/http"
- . "gopkg.in/check.v1"
)
func Test(t *testing.T) { TestingT(t) }
@@ -34,6 +34,7 @@ func TestSealRequest(t *testing.T) {
}
type BackendSuite struct{}
+
var _ = Suite(&BackendSuite{})
func (s *BackendSuite) TestSendRemoteCommand(c *C) {
diff --git a/socketserver/server/commands.go b/socketserver/server/commands.go
index 83dddb90..665256c9 100644
--- a/socketserver/server/commands.go
+++ b/socketserver/server/commands.go
@@ -312,6 +312,7 @@ func C2SEmoticonUses(conn *websocket.Conn, client *ClientInfo, msg ClientMessage
return ResponseSuccess, nil
}
+// is_init_func
func aggregateDataSender() {
for {
time.Sleep(5 * time.Minute)
@@ -403,6 +404,7 @@ func bunchedRequestFromCM(msg *ClientMessage) bunchedRequest {
return bunchedRequest{Command: msg.Command, Param: msg.origArguments}
}
+// is_init_func
func bunchCacheJanitor() {
go func() {
for {
diff --git a/socketserver/server/handlecore.go b/socketserver/server/handlecore.go
index 1be2ef9c..c61dfa32 100644
--- a/socketserver/server/handlecore.go
+++ b/socketserver/server/handlecore.go
@@ -126,6 +126,7 @@ func startJanitors() {
go shutdownHandler()
}
+// is_init_func
func shutdownHandler() {
ch := make(chan os.Signal)
signal.Notify(ch, syscall.SIGUSR1)
@@ -139,6 +140,19 @@ func shutdownHandler() {
os.Exit(0)
}
+// is_init_func +test
+func dumpStackOnCtrlZ() {
+ ch := make(chan os.Signal)
+ signal.Notify(ch, syscall.SIGTSTP)
+ for _ = range ch {
+ fmt.Println("Got ^Z")
+
+ buf := make([]byte, 10000)
+ byteCnt := runtime.Stack(buf, true)
+ fmt.Println(string(buf[:byteCnt]))
+ }
+}
+
// SocketUpgrader is the websocket.Upgrader currently in use.
var SocketUpgrader = websocket.Upgrader{
ReadBufferSize: 1024,
diff --git a/socketserver/server/irc.go b/socketserver/server/irc.go
index 6e4df282..568cb534 100644
--- a/socketserver/server/irc.go
+++ b/socketserver/server/irc.go
@@ -36,6 +36,7 @@ func AddPendingAuthorization(client *ClientInfo, challenge string, callback Auth
})
}
+// is_init_func
func authorizationJanitor() {
for {
time.Sleep(5 * time.Minute)
@@ -90,6 +91,7 @@ const DEBUG = "DEBUG"
var errChallengeNotFound = errors.New("did not find a challenge solved by that message")
+// is_init_func
func ircConnection() {
c := irc.SimpleClient("justinfan123")
diff --git a/socketserver/server/stats.go b/socketserver/server/stats.go
index d9fb11f3..115cfefb 100644
--- a/socketserver/server/stats.go
+++ b/socketserver/server/stats.go
@@ -58,11 +58,14 @@ type StatsData struct {
// Its structure should be versioned as it is exposed via JSON.
//
// Note as to threaded access - this is soft/fun data and not critical to data integrity.
-// I don't really care.
+// Fix anything that -race turns up, but otherwise it's not too much of a problem.
var Statistics = newStatsData()
+// CommandCounter is a channel for race-free counting of command usage.
var CommandCounter = make(chan Command, 10)
+// commandCounter receives from the CommandCounter channel and uses the value to increment the values in Statistics.
+// is_init_func
func commandCounter() {
for cmd := range CommandCounter {
Statistics.CommandsIssuedTotal++
@@ -70,6 +73,7 @@ func commandCounter() {
}
}
+// StatsDataVersion
const StatsDataVersion = 5
const pageSize = 4096
@@ -145,6 +149,7 @@ func updatePeriodicStats() {
var sysMemLastUpdate time.Time
var sysMemUpdateLock sync.Mutex
+// updateSysMem reads the system's available RAM.
func updateSysMem() {
if time.Now().Add(-2 * time.Second).After(sysMemLastUpdate) {
sysMemUpdateLock.Lock()
@@ -163,6 +168,7 @@ func updateSysMem() {
}
}
+// HTTPShowStatistics handles the /stats endpoint. It writes out the Statistics object as indented JSON.
func HTTPShowStatistics(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
diff --git a/socketserver/server/subscriptions.go b/socketserver/server/subscriptions.go
index 8609e7c6..ecd73a0a 100644
--- a/socketserver/server/subscriptions.go
+++ b/socketserver/server/subscriptions.go
@@ -145,7 +145,7 @@ func unsubscribeAllClients() {
const ReapingDelay = 1 * time.Minute
// Checks ChatSubscriptionInfo for entries with no subscribers every ReapingDelay.
-// Started from SetupServer().
+// is_init_func
func pubsubJanitor() {
for {
time.Sleep(ReapingDelay)
diff --git a/socketserver/server/subscriptions_test.go b/socketserver/server/subscriptions_test.go
index d53202c1..27ed6fe3 100644
--- a/socketserver/server/subscriptions_test.go
+++ b/socketserver/server/subscriptions_test.go
@@ -11,6 +11,7 @@ import (
"sync"
"syscall"
"testing"
+ "time"
)
func TestSubscriptionAndPublish(t *testing.T) {
@@ -132,6 +133,7 @@ func TestSubscriptionAndPublish(t *testing.T) {
doneWg.Add(1)
readyWg.Wait() // enforce ordering
+ time.Sleep(2 * time.Millisecond)
readyWg.Add(1)
go func(conn *websocket.Conn) {
TSendMessage(t, conn, 1, HelloCommand, []interface{}{"ffz_0.0-test", uuid.NewV4().String()})
diff --git a/socketserver/server/testinfra_test.go b/socketserver/server/testinfra_test.go
index e2c1abef..07fb063c 100644
--- a/socketserver/server/testinfra_test.go
+++ b/socketserver/server/testinfra_test.go
@@ -9,6 +9,7 @@ import (
"net/http/httptest"
"net/url"
"os"
+ "sync"
"testing"
"time"
)
@@ -20,7 +21,13 @@ const (
)
const SetupNoServers = 0
+var signalCatch sync.Once
+
func TSetup(flags int, backendChecker *TBackendRequestChecker) (socketserver *httptest.Server, backend *httptest.Server, urls TURLs) {
+ signalCatch.Do(func() {
+ go dumpStackOnCtrlZ()
+ })
+
DumpBacklogData()
ioutil.WriteFile("index.html", []byte(`
@@ -36,7 +43,7 @@ func TSetup(flags int, backendChecker *TBackendRequestChecker) (socketserver *ht
A FrankerFaceZ Service
— CatBag by Wolsk
-`), 0600)
+`), 0644)
conf := &ConfigFile{
ServerID: 20,
diff --git a/socketserver/server/tickspersecond.go b/socketserver/server/tickspersecond.go
index b545740d..36e99516 100644
--- a/socketserver/server/tickspersecond.go
+++ b/socketserver/server/tickspersecond.go
@@ -6,4 +6,7 @@ package server
// }
import "C"
+// note: this seems to add 0.1s to compile time on my machine
var ticksPerSecond = int(C.get_ticks_per_second())
+
+//var ticksPerSecond = 100