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  }