github.com/cihub/seelog@v0.0.0-20170130134532-f561c5e57575/behavior_asyncloop_test.go (about) 1 // Copyright (c) 2012 - Cloud Instruments Co., Ltd. 2 // 3 // All rights reserved. 4 // 5 // Redistribution and use in source and binary forms, with or without 6 // modification, are permitted provided that the following conditions are met: 7 // 8 // 1. Redistributions of source code must retain the above copyright notice, this 9 // list of conditions and the following disclaimer. 10 // 2. Redistributions in binary form must reproduce the above copyright notice, 11 // this list of conditions and the following disclaimer in the documentation 12 // and/or other materials provided with the distribution. 13 // 14 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 15 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 16 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 17 // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR 18 // ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 19 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 20 // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 21 // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 23 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 25 package seelog 26 27 import ( 28 "strconv" 29 "testing" 30 ) 31 32 func Test_Asyncloop(t *testing.T) { 33 fileName := "beh_test_asyncloop.log" 34 count := 100 35 36 Current.Close() 37 38 if e := tryRemoveFile(fileName); e != nil { 39 t.Error(e) 40 return 41 } 42 defer func() { 43 if e := tryRemoveFile(fileName); e != nil { 44 t.Error(e) 45 } 46 }() 47 48 testConfig := ` 49 <seelog type="asyncloop"> 50 <outputs formatid="msg"> 51 <file path="` + fileName + `"/> 52 </outputs> 53 <formats> 54 <format id="msg" format="%Msg%n"/> 55 </formats> 56 </seelog>` 57 58 logger, _ := LoggerFromConfigAsString(testConfig) 59 err := ReplaceLogger(logger) 60 if err != nil { 61 t.Error(err) 62 return 63 } 64 65 for i := 0; i < count; i++ { 66 Trace(strconv.Itoa(i)) 67 } 68 69 Flush() 70 71 gotCount, err := countSequencedRowsInFile(fileName) 72 if err != nil { 73 t.Error(err) 74 return 75 } 76 77 if int64(count) != gotCount { 78 t.Errorf("wrong count of log messages. Expected: %v, got: %v.", count, gotCount) 79 return 80 } 81 82 Current.Close() 83 } 84 85 func Test_AsyncloopOff(t *testing.T) { 86 fileName := "beh_test_asyncloopoff.log" 87 count := 100 88 89 Current.Close() 90 91 if e := tryRemoveFile(fileName); e != nil { 92 t.Error(e) 93 return 94 } 95 96 testConfig := ` 97 <seelog type="asyncloop" levels="off"> 98 <outputs formatid="msg"> 99 <file path="` + fileName + `"/> 100 </outputs> 101 <formats> 102 <format id="msg" format="%Msg%n"/> 103 </formats> 104 </seelog>` 105 106 logger, _ := LoggerFromConfigAsString(testConfig) 107 err := ReplaceLogger(logger) 108 if err != nil { 109 t.Error(err) 110 return 111 } 112 113 for i := 0; i < count; i++ { 114 Trace(strconv.Itoa(i)) 115 } 116 117 Flush() 118 119 ex, err := fileExists(fileName) 120 if err != nil { 121 t.Error(err) 122 } 123 if ex { 124 t.Errorf("logger at level OFF is not expected to create log file at all.") 125 defer func() { 126 if e := tryRemoveFile(fileName); e != nil { 127 t.Error(e) 128 } 129 }() 130 } 131 132 Current.Close() 133 }