go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/cli/prof/prof_test.go (about)

     1  // Copyright (c) Mondoo, Inc.
     2  // SPDX-License-Identifier: BUSL-1.1
     3  
     4  package prof
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/require"
    10  )
    11  
    12  func TestParse(t *testing.T) {
    13  	t.Run("no options provided", func(t *testing.T) {
    14  		{
    15  			opts, err := parseProf("")
    16  			require.NoError(t, err)
    17  			require.Equal(t, defaultOpts, opts)
    18  		}
    19  
    20  		{
    21  			opts, err := parseProf("     ")
    22  			require.NoError(t, err)
    23  			require.Equal(t, defaultOpts, opts)
    24  		}
    25  
    26  		{
    27  			opts, err := parseProf(" , ,,,   ")
    28  			require.NoError(t, err)
    29  			require.Equal(t, defaultOpts, opts)
    30  		}
    31  	})
    32  
    33  	t.Run("enable", func(t *testing.T) {
    34  		{
    35  			expected := defaultOpts
    36  			expected.Enabled = true
    37  
    38  			opts, err := parseProf("enable")
    39  			require.NoError(t, err)
    40  			require.Equal(t, expected, opts)
    41  		}
    42  
    43  		{
    44  			expected := defaultOpts
    45  			expected.Enabled = true
    46  
    47  			opts, err := parseProf("enable=true")
    48  			require.NoError(t, err)
    49  			require.Equal(t, expected, opts)
    50  		}
    51  
    52  		{
    53  			expected := defaultOpts
    54  
    55  			opts, err := parseProf("enable=truce")
    56  			require.NoError(t, err)
    57  			require.Equal(t, expected, opts)
    58  		}
    59  	})
    60  
    61  	t.Run("enabled", func(t *testing.T) {
    62  		{
    63  			expected := defaultOpts
    64  			expected.Enabled = true
    65  
    66  			opts, err := parseProf("enabled")
    67  			require.NoError(t, err)
    68  			require.Equal(t, expected, opts)
    69  		}
    70  
    71  		{
    72  			expected := defaultOpts
    73  			expected.Enabled = true
    74  
    75  			opts, err := parseProf("enabled=true")
    76  			require.NoError(t, err)
    77  			require.Equal(t, expected, opts)
    78  		}
    79  
    80  		{
    81  			expected := defaultOpts
    82  
    83  			opts, err := parseProf("enabled=truce")
    84  			require.NoError(t, err)
    85  			require.Equal(t, expected, opts)
    86  		}
    87  	})
    88  
    89  	t.Run("listen", func(t *testing.T) {
    90  		{
    91  			expected := defaultOpts
    92  
    93  			opts, err := parseProf("listen")
    94  			require.NoError(t, err)
    95  			require.Equal(t, expected, opts)
    96  		}
    97  
    98  		{
    99  			expected := defaultOpts
   100  
   101  			opts, err := parseProf("listen=")
   102  			require.NoError(t, err)
   103  			require.Equal(t, expected, opts)
   104  		}
   105  
   106  		{
   107  			expected := defaultOpts
   108  			expected.Listen = "localhost:7474"
   109  			opts, err := parseProf("listen=localhost:7474")
   110  			require.NoError(t, err)
   111  			require.Equal(t, expected, opts)
   112  		}
   113  	})
   114  
   115  	t.Run("memprofilerate", func(t *testing.T) {
   116  		{
   117  			expected := defaultOpts
   118  
   119  			opts, err := parseProf("memprofilerate")
   120  			require.NoError(t, err)
   121  			require.Equal(t, expected, opts)
   122  		}
   123  
   124  		{
   125  			expected := defaultOpts
   126  
   127  			opts, err := parseProf("memprofilerate=")
   128  			require.NoError(t, err)
   129  			require.Equal(t, expected, opts)
   130  		}
   131  
   132  		{
   133  			_, err := parseProf("memprofilerate=notanumber")
   134  			require.Error(t, err)
   135  		}
   136  
   137  		{
   138  			expected := defaultOpts
   139  			expectedMemProfileRate := 43
   140  			expected.MemProfileRate = &expectedMemProfileRate
   141  
   142  			opts, err := parseProf("memprofilerate=43")
   143  			require.NoError(t, err)
   144  			require.Equal(t, expected, opts)
   145  		}
   146  	})
   147  
   148  	t.Run("all together", func(t *testing.T) {
   149  		{
   150  			expected := defaultOpts
   151  			expected.Enabled = true
   152  			expectedMemProfileRate := 43
   153  			expected.MemProfileRate = &expectedMemProfileRate
   154  			expected.Listen = "localhost:7474"
   155  
   156  			opts, err := parseProf("enabled,memprofilerate = 43, listen= localhost:7474")
   157  			require.NoError(t, err)
   158  			require.Equal(t, expected, opts)
   159  		}
   160  	})
   161  }