github.com/viant/toolbox@v0.34.5/file_logger_test.go (about)

     1  package toolbox_test
     2  
     3  import (
     4  	"fmt"
     5  	"github.com/stretchr/testify/assert"
     6  	"github.com/viant/toolbox"
     7  	"io/ioutil"
     8  	"os"
     9  	"syscall"
    10  	"testing"
    11  	"time"
    12  )
    13  
    14  
    15  func TestConfigLogger(t *testing.T) {
    16  
    17  	_, err := toolbox.NewFileLogger(toolbox.FileLoggerConfig{
    18  		LogType:           "test",
    19  		FileTemplate:      "/tmp/test[yyyy].log",
    20  		QueueFlashCount:   5,
    21  		MaxQueueSize:      100,
    22  		FlushRequencyInMs: 250,
    23  		//MaxIddleTimeInSec: 2,
    24  	})
    25  	assert.NotNil(t, err)
    26  
    27  	_, err = toolbox.NewFileLogger(toolbox.FileLoggerConfig{
    28  		LogType:         "test",
    29  		FileTemplate:    "/tmp/test[yyyy].log",
    30  		QueueFlashCount: 5,
    31  		MaxQueueSize:    100,
    32  		//FlushRequencyInMs: 250,
    33  		MaxIddleTimeInSec: 2,
    34  	})
    35  	assert.NotNil(t, err)
    36  
    37  	_, err = toolbox.NewFileLogger(toolbox.FileLoggerConfig{
    38  		LogType:         "test",
    39  		FileTemplate:    "/tmp/test[yyyy].log",
    40  		QueueFlashCount: 5,
    41  		//MaxQueueSize      :100,
    42  		FlushRequencyInMs: 250,
    43  		MaxIddleTimeInSec: 2,
    44  	})
    45  	assert.NotNil(t, err)
    46  
    47  	_, err = toolbox.NewFileLogger(toolbox.FileLoggerConfig{
    48  		LogType:      "test",
    49  		FileTemplate: "/tmp/test[yyyy].log",
    50  		//QueueFlashCount        :5,
    51  		MaxQueueSize:      100,
    52  		FlushRequencyInMs: 250,
    53  		MaxIddleTimeInSec: 2,
    54  	})
    55  	assert.NotNil(t, err)
    56  
    57  	_, err = toolbox.NewFileLogger(toolbox.FileLoggerConfig{
    58  		LogType: "test",
    59  		//FileTemplate      :"/tmp/test[yyyy].log",
    60  		QueueFlashCount:   5,
    61  		MaxQueueSize:      100,
    62  		FlushRequencyInMs: 250,
    63  		MaxIddleTimeInSec: 2,
    64  	})
    65  	assert.NotNil(t, err)
    66  
    67  	_, err = toolbox.NewFileLogger(toolbox.FileLoggerConfig{
    68  		//LogType           :"test",
    69  		FileTemplate:      "/tmp/test[yyyy].log",
    70  		QueueFlashCount:   5,
    71  		MaxQueueSize:      100,
    72  		FlushRequencyInMs: 250,
    73  		MaxIddleTimeInSec: 2,
    74  	})
    75  	assert.NotNil(t, err)
    76  
    77  }
    78  
    79  func TestLogger(t *testing.T) {
    80  
    81  	testFile := fmt.Sprintf("/tmp/test%v.log", time.Now().Year())
    82  	toolbox.RemoveFileIfExist(testFile)
    83  	defer toolbox.RemoveFileIfExist(testFile)
    84  
    85  	logger, err := toolbox.NewFileLogger(toolbox.FileLoggerConfig{
    86  		LogType:           "test",
    87  		FileTemplate:      "/tmp/test[yyyy].log",
    88  		QueueFlashCount:   4,
    89  		MaxQueueSize:      100,
    90  		FlushRequencyInMs: 600,
    91  		MaxIddleTimeInSec: 1,
    92  	})
    93  
    94  	assert.Nil(t, err)
    95  
    96  	for i := 0; i < 6; i++ {
    97  		logger.Log(&toolbox.LogMessage{
    98  			MessageType: "test",
    99  			Message:     fmt.Sprintf("Abc%v", i),
   100  		})
   101  		time.Sleep(10 * time.Millisecond)
   102  	}
   103  
   104  	time.Sleep(400 * time.Millisecond)
   105  	if file, err := os.Open(testFile); err == nil {
   106  		defer file.Close()
   107  		content, err := ioutil.ReadAll(file)
   108  		assert.Nil(t, err)
   109  		assert.Equal(t, "Abc0\nAbc1\nAbc2\nAbc3\nAbc4\n", string(content))
   110  	}
   111  
   112  	time.Sleep(1 * time.Second)
   113  
   114  	if file, err := os.Open(testFile); err == nil {
   115  		defer file.Close()
   116  		content, err := ioutil.ReadAll(file)
   117  		assert.Nil(t, err)
   118  		assert.Equal(t, "Abc0\nAbc1\nAbc2\nAbc3\nAbc4\nAbc5\n", string(content))
   119  	}
   120  
   121  	time.Sleep(1 * time.Second)
   122  
   123  	if file, err := os.Open(testFile); err == nil {
   124  		file.Close()
   125  		os.Remove(testFile)
   126  	}
   127  
   128  	logger.Notify(syscall.SIGKILL)
   129  
   130  }
   131  
   132  //
   133  //func TestFileLogger_Notify(t *testing.T) {
   134  //
   135  //	testFile := fmt.Sprintf("/tmp/test%v.log", time.Now().Year())
   136  //	toolbox.RemoveFileIfExist(testFile)
   137  //	defer toolbox.RemoveFileIfExist(testFile)
   138  //
   139  //	logger, err := toolbox.NewFileLogger(toolbox.FileLoggerConfig{
   140  //		LogType:           "test",
   141  //		FileTemplate:      "/tmp/test[yyyy].log",
   142  //		QueueFlashCount:   40,
   143  //		MaxQueueSize:      100,
   144  //		FlushRequencyInMs: 1200000,
   145  //		MaxIddleTimeInSec: 20,
   146  //	})
   147  //
   148  //	assert.Nil(t, err)
   149  //
   150  //	for i := 0; i < 6; i++ {
   151  //		logger.Log(&toolbox.LogMessage{
   152  //			MessageType: "test",
   153  //			Message:     fmt.Sprintf("Abc%v", i),
   154  //		})
   155  //	}
   156  //	logger.Notify(syscall.SIGKILL)
   157  //	time.Sleep(100 * time.Millisecond)
   158  //	if file, err := os.Open(testFile); err == nil {
   159  //		defer file.Close()
   160  //		content, err := ioutil.ReadAll(file)
   161  //		assert.Nil(t, err)
   162  //		assert.Equal(t, "Abc0\nAbc1\nAbc2\nAbc3\nAbc4\nAbc5\n", string(content))
   163  //	}
   164  //	assert.Nil(t, err)
   165  //}