소스 검색

geodns-logs: avoid poolCC errors in log

(this is a tool just for the ntppool system ...)
Ask Bjørn Hansen 4 년 전
부모
커밋
9012140416
2개의 변경된 파일31개의 추가작업 그리고 4개의 파일을 삭제
  1. 25 0
      geodns-logs/process-stats_test.go
  2. 6 4
      geodns-logs/stats.go

+ 25 - 0
geodns-logs/process-stats_test.go

@@ -0,0 +1,25 @@
+package main
+
+import "testing"
+
+func TestGetPoolCC(t *testing.T) {
+	tests := []struct {
+		label string
+		cc    string
+		ok    bool
+	}{
+		{"1.debian.pool.ntp.org.", "", false},
+		{"2.dk.pool.ntp.org.", "dk", true},
+		{"dk.pool.ntp.org.", "dk", true},
+		{"0.asia.pool.ntp.org.", "asia", true},
+		{"1.pool.ntp.org.", "", false},
+	}
+
+	for _, input := range tests {
+		cc, ok := getPoolCC(input.label)
+		if cc != input.cc || ok != input.ok {
+			t.Logf("%q got %q (%t), expected %q (%t)", input.label, cc, ok, input.cc, input.ok)
+			t.Fail()
+		}
+	}
+}

+ 6 - 4
geodns-logs/stats.go

@@ -82,10 +82,12 @@ func (stats *Stats) Add(e *querylog.Entry) error {
 	if e.Origin == "pool.ntp.org" || strings.HasSuffix(e.Origin, "ntppool.org") {
 		vendor = vendorName(e.Name)
 
-		var ok bool
-		poolCC, ok = getPoolCC(e.LabelName)
-		if !ok {
-			log.Printf("Could not get valid poolCC label for %+v", e)
+		if len(vendor) == 0 && e.Name != e.Origin {
+			var ok bool
+			poolCC, ok = getPoolCC(e.LabelName)
+			if !ok {
+				log.Printf("Could not get valid poolCC label for %+v", e)
+			}
 		}
 	}