github.com/google/syzkaller@v0.0.0-20251211124644-a066d2bc4b02/tools/syz-db/syz-db_test.go (about)

     1  // Copyright (c) Qualcomm Innovation Center, Inc. All rights reserved
     2  // Copyright 2024 syzkaller project authors. All rights reserved.
     3  // Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
     4  
     5  package main
     6  
     7  import (
     8  	"fmt"
     9  	"os"
    10  	"strings"
    11  	"testing"
    12  
    13  	"github.com/google/syzkaller/pkg/db"
    14  	"github.com/google/syzkaller/pkg/osutil"
    15  	"github.com/google/syzkaller/prog"
    16  	"github.com/google/syzkaller/sys/targets"
    17  	"github.com/stretchr/testify/assert"
    18  )
    19  
    20  func TestDBRemoveMatchLine(t *testing.T) {
    21  	fn, err := osutil.TempFile("syzkaller.test.db")
    22  	if err != nil {
    23  		t.Fatal(err)
    24  	}
    25  	defer os.Remove(fn)
    26  	db1, err := db.Open(fn, false)
    27  	if err != nil {
    28  		t.Fatalf("failed to open db: %v", err)
    29  	}
    30  	input := []string{
    31  		"r0 = open$dir(&(0x7f0000000000), 0x161840, 0x162)",
    32  		"ioctl$BTRFS_IOC_DEFRAG(r0, 0x50009402, 0x0)",
    33  		"close(r0)",
    34  	}
    35  	want := []string{
    36  		"ioctl$BTRFS_IOC_DEFRAG(0xffffffffffffffff, 0x50009402, 0x0)",
    37  		"close(0xffffffffffffffff)",
    38  	}
    39  	db1.Save("rm", []byte(strings.Join(input, "\n")), 0)
    40  	db1.Flush()
    41  	target, err := prog.GetTarget(targets.Linux, targets.AMD64)
    42  	if err != nil {
    43  		t.Fatal(err)
    44  	}
    45  	rm(fn, "open$dir", target)
    46  	db1, err = db.Open(fn, false)
    47  	if err != nil {
    48  		t.Fatalf("failed to open db: %v", err)
    49  	}
    50  	expected := fmt.Sprintf("%s\n", strings.Join(want, "\n"))
    51  	assert.Equal(t, expected, string(db1.Records["rm"].Val))
    52  }