You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@htrace.apache.org by cm...@apache.org on 2015/01/31 00:09:46 UTC
incubator-htrace git commit: HTRACE-99. log.go fails to create new
log files (cmccabe)
Repository: incubator-htrace
Updated Branches:
refs/heads/master 4b492b241 -> cec039de5
HTRACE-99. log.go fails to create new log files (cmccabe)
Project: http://git-wip-us.apache.org/repos/asf/incubator-htrace/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-htrace/commit/cec039de
Tree: http://git-wip-us.apache.org/repos/asf/incubator-htrace/tree/cec039de
Diff: http://git-wip-us.apache.org/repos/asf/incubator-htrace/diff/cec039de
Branch: refs/heads/master
Commit: cec039de59fd571ac7ac7fe93683746891e04468
Parents: 4b492b2
Author: Colin P. Mccabe <cm...@apache.org>
Authored: Fri Jan 30 15:07:37 2015 -0800
Committer: Colin P. Mccabe <cm...@apache.org>
Committed: Fri Jan 30 15:07:37 2015 -0800
----------------------------------------------------------------------
.../src/go/src/org/apache/htrace/common/log.go | 2 +-
.../go/src/org/apache/htrace/common/log_test.go | 122 +++++++++++++++++++
2 files changed, 123 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/cec039de/htrace-core/src/go/src/org/apache/htrace/common/log.go
----------------------------------------------------------------------
diff --git a/htrace-core/src/go/src/org/apache/htrace/common/log.go b/htrace-core/src/go/src/org/apache/htrace/common/log.go
index 31faea4..5ced1be 100644
--- a/htrace-core/src/go/src/org/apache/htrace/common/log.go
+++ b/htrace-core/src/go/src/org/apache/htrace/common/log.go
@@ -104,7 +104,7 @@ func (path logPath) Open() *logSink {
if path == STDOUT_LOG_PATH {
return &logSink{path: path, file: os.Stdout}
}
- file, err := os.OpenFile(string(path), os.O_WRONLY|os.O_APPEND, 0777)
+ file, err := os.OpenFile(string(path), os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0777)
if err != nil {
sink := &logSink{path: STDOUT_LOG_PATH, file: os.Stdout}
fmt.Fprintf(os.Stderr, "Failed to open log file %s: %s\n",
http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/cec039de/htrace-core/src/go/src/org/apache/htrace/common/log_test.go
----------------------------------------------------------------------
diff --git a/htrace-core/src/go/src/org/apache/htrace/common/log_test.go b/htrace-core/src/go/src/org/apache/htrace/common/log_test.go
new file mode 100644
index 0000000..64d6a3f
--- /dev/null
+++ b/htrace-core/src/go/src/org/apache/htrace/common/log_test.go
@@ -0,0 +1,122 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package common
+
+import (
+ "bufio"
+ "fmt"
+ "io"
+ "io/ioutil"
+ "org/apache/htrace/conf"
+ "os"
+ "strings"
+ "testing"
+)
+
+func newLogger(faculty string, args ...string) *Logger {
+ cnfBld := conf.Builder{Defaults: conf.DEFAULTS}
+ cnf, err := cnfBld.Build()
+ if err != nil {
+ panic(fmt.Sprintf("failed to create conf: %s", err.Error()))
+ }
+ cnf2 := cnf.Clone(args...)
+ lg := NewLogger(faculty, cnf2)
+ return lg
+}
+
+func TestNewLogger(t *testing.T) {
+ lg := newLogger("foo", "log.level", "TRACE")
+ lg.Close()
+}
+
+func verifyLines(t *testing.T, rdr io.Reader, lines []string) {
+ scanner := bufio.NewScanner(rdr)
+ lineIdx := 0
+ for scanner.Scan() {
+ line := scanner.Text()
+ if !strings.Contains(line, lines[lineIdx]) {
+ t.Fatalf("Error on line %d: didn't find substring '%s' in line '%s'\n",
+ (lineIdx + 1), lines[lineIdx], line)
+ }
+ lineIdx++
+ }
+ if err := scanner.Err(); err != nil {
+ t.Fatal(err.Error())
+ }
+}
+
+func TestFileLogs(t *testing.T) {
+ tempDir, err := ioutil.TempDir(os.TempDir(), "testFileLogs")
+ if err != nil {
+ panic(fmt.Sprintf("error creating tempdir: %s\n", err.Error()))
+ }
+ defer os.RemoveAll(tempDir)
+ logPath := tempDir + conf.PATH_SEP + "log"
+ lg := newLogger("foo", "log.level", "DEBUG",
+ "foo.log.level", "INFO",
+ "log.path", logPath)
+ lg.Tracef("Non-important stuff, ignore this.\n")
+ lg.Infof("problem with the foobar\n")
+ lg.Tracef("More non-important stuff, also ignore this.\n")
+ lg.Infof("and another problem with the foobar\n")
+ logFile, err := os.Open(logPath)
+ if err != nil {
+ t.Fatalf("failed to open file %s: %s\n", logPath, err.Error())
+ }
+ verifyLines(t, logFile, []string {
+ "problem with the foobar",
+ "and another problem with the foobar",
+ })
+ logFile.Close()
+ lg.Close()
+}
+
+func TestMultipleFileLogs(t *testing.T) {
+ tempDir, err := ioutil.TempDir(os.TempDir(), "testMultipleFileLogs")
+ if err != nil {
+ panic(fmt.Sprintf("error creating tempdir: %s\n", err.Error()))
+ }
+ defer os.RemoveAll(tempDir)
+ logPath := tempDir + conf.PATH_SEP + "log"
+ fooLg := newLogger("foo", "log.level", "DEBUG",
+ "foo.log.level", "INFO",
+ "log.path", logPath)
+ fooLg.Infof("The foo needs maintenance.\n")
+ barLg := newLogger("bar", "log.level", "DEBUG",
+ "foo.log.level", "INFO",
+ "log.path", logPath)
+ barLg.Debugf("The bar is open\n")
+ fooLg.Errorf("Fizz buzz\n")
+ logFile, err := os.Open(logPath)
+ if err != nil {
+ t.Fatalf("failed to open file %s: %s\n", logPath, err.Error())
+ }
+ fooLg.Tracef("Fizz buzz2\n")
+ barLg.Tracef("Fizz buzz3\n")
+ verifyLines(t, logFile, []string {
+ "The foo needs maintenance.",
+ "The bar is open",
+ "Fizz buzz",
+ "Fizz buzz3",
+ })
+ logFile.Close()
+ fooLg.Close()
+ barLg.Close()
+}