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 25package seelog 26 27import ( 28 "strconv" 29 "testing" 30) 31 32func Test_Asynctimer(t *testing.T) { 33 fileName := "beh_test_asynctimer.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="asynctimer" asyncinterval="100"> 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