github.com/bananabytelabs/wazero@v0.0.0-20240105073314-54b22a776da8/internal/gojs/logging/logging_test.go (about) 1 package logging 2 3 import ( 4 "testing" 5 6 "github.com/bananabytelabs/wazero/api" 7 "github.com/bananabytelabs/wazero/internal/gojs/custom" 8 "github.com/bananabytelabs/wazero/internal/logging" 9 "github.com/bananabytelabs/wazero/internal/testing/require" 10 "github.com/bananabytelabs/wazero/internal/wasm" 11 ) 12 13 type testFunctionDefinition struct { 14 name string 15 *wasm.FunctionDefinition 16 } 17 18 // Name implements the same method as documented on api.FunctionDefinition. 19 func (f *testFunctionDefinition) Name() string { 20 return f.name 21 } 22 23 func TestIsInLogScope(t *testing.T) { 24 runtimeGetRandomData := &testFunctionDefinition{name: custom.NameRuntimeGetRandomData} 25 runtimeResetMemoryDataView := &testFunctionDefinition{name: custom.NameRuntimeResetMemoryDataView} 26 runtimeWasmExit := &testFunctionDefinition{name: custom.NameRuntimeWasmExit} 27 syscallValueCall := &testFunctionDefinition{name: custom.NameSyscallValueCall} 28 tests := []struct { 29 name string 30 fnd api.FunctionDefinition 31 scopes logging.LogScopes 32 expected bool 33 }{ 34 { 35 name: "runtimeWasmExit in LogScopeProc", 36 fnd: runtimeWasmExit, 37 scopes: logging.LogScopeProc, 38 expected: true, 39 }, 40 { 41 name: "runtimeWasmExit not in LogScopeFilesystem", 42 fnd: runtimeWasmExit, 43 scopes: logging.LogScopeFilesystem, 44 expected: false, 45 }, 46 { 47 name: "runtimeWasmExit in LogScopeProc|LogScopeFilesystem", 48 fnd: runtimeWasmExit, 49 scopes: logging.LogScopeProc | logging.LogScopeFilesystem, 50 expected: true, 51 }, 52 { 53 name: "runtimeWasmExit not in LogScopeNone", 54 fnd: runtimeWasmExit, 55 scopes: logging.LogScopeNone, 56 expected: false, 57 }, 58 { 59 name: "runtimeWasmExit in LogScopeAll", 60 fnd: runtimeWasmExit, 61 scopes: logging.LogScopeAll, 62 expected: true, 63 }, 64 { 65 name: "runtimeResetMemoryDataView in LogScopeMemory", 66 fnd: runtimeResetMemoryDataView, 67 scopes: logging.LogScopeMemory, 68 expected: true, 69 }, 70 { 71 name: "runtimeResetMemoryDataView not in LogScopeFilesystem", 72 fnd: runtimeResetMemoryDataView, 73 scopes: logging.LogScopeFilesystem, 74 expected: false, 75 }, 76 { 77 name: "runtimeResetMemoryDataView in LogScopeMemory|LogScopeFilesystem", 78 fnd: runtimeResetMemoryDataView, 79 scopes: logging.LogScopeMemory | logging.LogScopeFilesystem, 80 expected: true, 81 }, 82 { 83 name: "runtimeResetMemoryDataView not in LogScopeNone", 84 fnd: runtimeResetMemoryDataView, 85 scopes: logging.LogScopeNone, 86 expected: false, 87 }, 88 { 89 name: "runtimeResetMemoryDataView in LogScopeAll", 90 fnd: runtimeResetMemoryDataView, 91 scopes: logging.LogScopeAll, 92 expected: true, 93 }, 94 { 95 name: "runtimeGetRandomData not in LogScopeFilesystem", 96 fnd: runtimeGetRandomData, 97 scopes: logging.LogScopeFilesystem, 98 expected: false, 99 }, 100 { 101 name: "runtimeGetRandomData in LogScopeRandom|LogScopeFilesystem", 102 fnd: runtimeGetRandomData, 103 scopes: logging.LogScopeRandom | logging.LogScopeFilesystem, 104 expected: true, 105 }, 106 { 107 name: "runtimeGetRandomData not in LogScopeNone", 108 fnd: runtimeGetRandomData, 109 scopes: logging.LogScopeNone, 110 expected: false, 111 }, 112 { 113 name: "runtimeGetRandomData in LogScopeAll", 114 fnd: runtimeGetRandomData, 115 scopes: logging.LogScopeAll, 116 expected: true, 117 }, 118 { 119 name: "syscallValueCall in LogScopeFilesystem", 120 fnd: syscallValueCall, 121 scopes: logging.LogScopeFilesystem, 122 expected: true, 123 }, 124 { 125 name: "syscallValueCall in LogScopeRandom", 126 fnd: syscallValueCall, 127 scopes: logging.LogScopeRandom, 128 expected: true, 129 }, 130 { 131 name: "syscallValueCall in LogScopeRandom|LogScopeFilesystem", 132 fnd: syscallValueCall, 133 scopes: logging.LogScopeRandom | logging.LogScopeFilesystem, 134 expected: true, 135 }, 136 { 137 name: "syscallValueCall in LogScopeAll", 138 fnd: syscallValueCall, 139 scopes: logging.LogScopeAll, 140 expected: true, 141 }, 142 { 143 name: "syscallValueCall not in LogScopeNone", 144 fnd: syscallValueCall, 145 scopes: logging.LogScopeNone, 146 expected: false, 147 }, 148 } 149 150 for _, tt := range tests { 151 tc := tt 152 153 t.Run(tc.name, func(t *testing.T) { 154 require.Equal(t, tc.expected, IsInLogScope(tc.fnd, tc.scopes)) 155 }) 156 } 157 }