github.com/stolowski/snapd@v0.0.0-20210407085831-115137ce5a22/snapdtool/tool_linux_test.go (about)

     1  package snapdtool_test
     2  
     3  import (
     4  	"io/ioutil"
     5  	"os"
     6  	"path/filepath"
     7  	"testing"
     8  
     9  	"github.com/snapcore/snapd/dirs"
    10  	"github.com/snapcore/snapd/snapdtool"
    11  )
    12  
    13  const dataOK = `one line
    14  another line
    15  yadda yadda
    16  VERSION=42
    17  potatoes
    18  `
    19  
    20  const dataNOK = `a line
    21  another
    22  this is a very long line
    23  that wasn't long what are you talking about long lines are like, so long you need to add things like commas to them for them to even make sense
    24  a short one
    25  and another
    26  what is this
    27  why
    28  no
    29  stop
    30  `
    31  
    32  const dataHuge = `Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    33  Quisque euismod ac elit ac auctor.
    34  Proin malesuada diam ac tellus maximus aliquam.
    35  Aenean tincidunt mi et tortor bibendum fringilla.
    36  Phasellus finibus, urna id convallis vestibulum, metus metus venenatis massa, et efficitur nisi elit in massa.
    37  Mauris at nisl leo.
    38  Nulla ullamcorper risus venenatis massa venenatis, ac finibus lacus aliquam.
    39  Nunc tempor convallis cursus.
    40  Maecenas id rhoncus orci, eget pretium eros.
    41  
    42  Donec et consectetur lacus.
    43  Nam nec mattis elit, id sollicitudin magna.
    44  Aenean sit amet diam vitae tellus finibus tristique.
    45  Duis et pharetra tortor, id pharetra erat.
    46  Suspendisse commodo venenatis blandit.
    47  Morbi tellus est, iaculis et tincidunt nec, semper ut ipsum.
    48  Mauris quis condimentum risus.
    49  Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    50  Mauris gravida turpis ut urna laoreet, sit amet tempor odio porttitor.
    51  
    52  Aliquam nibh libero, venenatis ac vehicula at, blandit id odio.
    53  Etiam malesuada consectetur porta.
    54  Fusce consectetur ligula et metus interdum sollicitudin.
    55  Pellentesque odio neque, pharetra et gravida non, vestibulum nec lorem.
    56  Sed condimentum velit ex, sit amet viverra lectus aliquet quis.
    57  Aliquam tincidunt eu elit at condimentum.
    58  Donec feugiat urna tortor, pellentesque tincidunt quam congue eu.
    59  
    60  Phasellus vel libero molestie, semper erat at, suscipit nisi.
    61  Nullam euismod neque ut turpis molestie, eu fringilla elit volutpat.
    62  Phasellus maximus, urna eget porta congue, diam enim volutpat diam, nec ultrices lorem risus ac metus.
    63  Vivamus convallis eros non nunc pretium bibendum.
    64  Maecenas consectetur metus metus.
    65  Morbi scelerisque urna at arcu tristique feugiat.
    66  Vestibulum condimentum odio sed tortor vulputate, eget hendrerit mi consequat.
    67  Integer egestas finibus augue, ac scelerisque ex pretium aliquam.
    68  Aliquam erat volutpat.
    69  Suspendisse a nulla ultrices, porttitor tellus ut, bibendum diam.
    70  In nibh dui, tempus eget vestibulum in, euismod in ex.
    71  In tempus felis lectus.
    72  
    73  Maecenas suscipit turpis eget velit molestie, quis luctus nibh placerat.
    74  Nulla semper eleifend nisi ut dignissim.
    75  Donec eu massa maximus, blandit massa ac, lobortis risus.
    76  Donec id condimentum libero, vel fringilla diam.
    77  Praesent ultrices, ante congue sollicitudin sagittis, orci ex maximus ipsum, at convallis nunc nisl nec lorem.
    78  Duis iaculis finibus fermentum.
    79  Curabitur quis pharetra metus.
    80  Donec nisl ipsum, faucibus vitae odio sed, mattis feugiat nisl.
    81  Pellentesque nec justo in magna volutpat accumsan.
    82  Pellentesque porttitor justo non velit porta rhoncus.
    83  Nulla ut lectus quis lectus rutrum dignissim.
    84  Pellentesque posuere sagittis felis, quis varius purus pharetra eu.
    85  Nam blandit diam ullamcorper, auctor massa at, aliquet dui.
    86  Aliquam erat volutpat.
    87  Nullam sit amet augue nec diam sollicitudin ullamcorper a vitae neque.
    88  VERSION=42
    89  `
    90  
    91  func benchmarkCSRE(b *testing.B, data string) {
    92  	tempdir, err := ioutil.TempDir("", "")
    93  	if err != nil {
    94  		b.Fatalf("tempdir: %v", err)
    95  	}
    96  	defer os.RemoveAll(tempdir)
    97  	if err = os.MkdirAll(filepath.Join(tempdir, dirs.CoreLibExecDir), 0755); err != nil {
    98  		b.Fatalf("mkdirall: %v", err)
    99  	}
   100  
   101  	if err = ioutil.WriteFile(filepath.Join(tempdir, dirs.CoreLibExecDir, "info"), []byte(data), 0600); err != nil {
   102  		b.Fatalf("%v", err)
   103  	}
   104  	b.ResetTimer()
   105  	for i := 0; i < b.N; i++ {
   106  		snapdtool.CoreSupportsReExec(tempdir)
   107  	}
   108  }
   109  
   110  func BenchmarkCSRE_fakeOK(b *testing.B)   { benchmarkCSRE(b, dataOK) }
   111  func BenchmarkCSRE_fakeNOK(b *testing.B)  { benchmarkCSRE(b, dataNOK) }
   112  func BenchmarkCSRE_fakeHuge(b *testing.B) { benchmarkCSRE(b, dataHuge) }
   113  
   114  func BenchmarkCSRE_real(b *testing.B) {
   115  	for i := 0; i < b.N; i++ {
   116  		snapdtool.CoreSupportsReExec("/snap/core/current")
   117  	}
   118  }