Skip to content

Commit

Permalink
Merge pull request #57 from adrianreber/2021-10-29-stats-functions
Browse files Browse the repository at this point in the history
Move statistics read funtion to stats/
  • Loading branch information
rst0git authored Oct 31, 2021
2 parents 636cac7 + 130a18c commit df3662d
Show file tree
Hide file tree
Showing 6 changed files with 73 additions and 34 deletions.
1 change: 0 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ phaul-test: $(TEST_BINARIES)
clean:
@rm -f $(TEST_BINARIES)
@rm -rf image
@rm -f rpc/rpc.proto stats/stats.proto

rpc/rpc.proto:
curl -sSL https://raw.githubusercontent.com/checkpoint-restore/criu/master/images/rpc.proto -o $@
Expand Down
12 changes: 12 additions & 0 deletions magic/types.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package magic

const (
ImgCommonMagic = 0x54564319 /* Sarov (a.k.a. Arzamas-16) */
ImgServiceMagic = 0x55105940 /* Zlatoust */
StatsMagic = 0x57093306 /* Ostashkov */

PrimaryMagicOffset = 0x0
SecondaryMagicOffset = 0x4
SizeOffset = 0x8
PayloadOffset = 0xC
)
2 changes: 1 addition & 1 deletion phaul/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ func (pc *Client) Migrate() error {
return err
}

st, err := criuGetDumpStats(imgDir)
st, err := stats.CriuGetDumpStats(imgDir)
if err != nil {
return err
}
Expand Down
32 changes: 0 additions & 32 deletions phaul/stats.go

This file was deleted.

6 changes: 6 additions & 0 deletions stats/types.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package stats

const (
StatsDump = "stats-dump"
StatsRestore = "stats-restore"
)
54 changes: 54 additions & 0 deletions stats/utils.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package stats

import (
"encoding/binary"
"errors"
"io/ioutil"
"os"
"path/filepath"

"github.com/checkpoint-restore/go-criu/v5/magic"
"google.golang.org/protobuf/proto"
)

func readStatisticsFile(imgDir *os.File, fileName string) (*StatsEntry, error) {
buf, err := ioutil.ReadFile(filepath.Join(imgDir.Name(), fileName))
if err != nil {
return nil, err
}

if binary.LittleEndian.Uint32(buf[magic.PrimaryMagicOffset:magic.SecondaryMagicOffset]) != magic.ImgServiceMagic {
return nil, errors.New("Primary magic not found")
}

if binary.LittleEndian.Uint32(buf[magic.SecondaryMagicOffset:magic.SizeOffset]) != magic.StatsMagic {
return nil, errors.New("Secondary magic not found")
}

payloadSize := binary.LittleEndian.Uint32(buf[magic.SizeOffset:magic.PayloadOffset])

st := &StatsEntry{}
if err := proto.Unmarshal(buf[magic.PayloadOffset:magic.PayloadOffset+payloadSize], st); err != nil {
return nil, err
}

return st, nil
}

func CriuGetDumpStats(imgDir *os.File) (*DumpStatsEntry, error) {
st, err := readStatisticsFile(imgDir, StatsDump)
if err != nil {
return nil, err
}

return st.GetDump(), nil
}

func CriuGetRestoreStats(imgDir *os.File) (*RestoreStatsEntry, error) {
st, err := readStatisticsFile(imgDir, StatsRestore)
if err != nil {
return nil, err
}

return st.GetRestore(), nil
}

0 comments on commit df3662d

Please sign in to comment.