mirror of
https://github.com/prometheus-community/windows_exporter.git
synced 2026-02-23 21:26:36 +00:00
committed by
Calle Pettersson
parent
517cd3b04b
commit
8841091f9c
69
vendor/github.com/Microsoft/hcsshim/internal/guid/guid.go
generated
vendored
Normal file
69
vendor/github.com/Microsoft/hcsshim/internal/guid/guid.go
generated
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
package guid
|
||||
|
||||
import (
|
||||
"crypto/rand"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var _ = (json.Marshaler)(&GUID{})
|
||||
var _ = (json.Unmarshaler)(&GUID{})
|
||||
|
||||
type GUID [16]byte
|
||||
|
||||
func New() GUID {
|
||||
g := GUID{}
|
||||
_, err := io.ReadFull(rand.Reader, g[:])
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return g
|
||||
}
|
||||
|
||||
func (g GUID) String() string {
|
||||
return fmt.Sprintf("%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x-%02x", g[3], g[2], g[1], g[0], g[5], g[4], g[7], g[6], g[8:10], g[10:])
|
||||
}
|
||||
|
||||
func FromString(s string) GUID {
|
||||
if len(s) != 36 {
|
||||
panic(fmt.Sprintf("invalid GUID length: %d", len(s)))
|
||||
}
|
||||
if s[8] != '-' || s[13] != '-' || s[18] != '-' || s[23] != '-' {
|
||||
panic("invalid GUID format")
|
||||
}
|
||||
indexOrder := [16]int{
|
||||
0, 2, 4, 6,
|
||||
9, 11,
|
||||
14, 16,
|
||||
19, 21,
|
||||
24, 26, 28, 30, 32, 34,
|
||||
}
|
||||
byteOrder := [16]int{
|
||||
3, 2, 1, 0,
|
||||
5, 4,
|
||||
7, 6,
|
||||
8, 9,
|
||||
10, 11, 12, 13, 14, 15,
|
||||
}
|
||||
var g GUID
|
||||
for i, x := range indexOrder {
|
||||
b, err := strconv.ParseInt(s[x:x+2], 16, 16)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
g[byteOrder[i]] = byte(b)
|
||||
}
|
||||
return g
|
||||
}
|
||||
|
||||
func (g GUID) MarshalJSON() ([]byte, error) {
|
||||
return json.Marshal(g.String())
|
||||
}
|
||||
|
||||
func (g *GUID) UnmarshalJSON(data []byte) error {
|
||||
*g = FromString(strings.Trim(string(data), "\""))
|
||||
return nil
|
||||
}
|
||||
136
vendor/github.com/Microsoft/hcsshim/internal/guid/guid_test.go
generated
vendored
Normal file
136
vendor/github.com/Microsoft/hcsshim/internal/guid/guid_test.go
generated
vendored
Normal file
@@ -0,0 +1,136 @@
|
||||
package guid
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func Test_New(t *testing.T) {
|
||||
g := New()
|
||||
g2 := New()
|
||||
if g == g2 {
|
||||
t.Fatal("GUID's should not be equal when generated")
|
||||
}
|
||||
}
|
||||
|
||||
func Test_FromString(t *testing.T) {
|
||||
g := New()
|
||||
g2 := FromString(g.String())
|
||||
if g != g2 {
|
||||
t.Fatalf("GUID's not equal %v, %v", g, g2)
|
||||
}
|
||||
}
|
||||
|
||||
func Test_MarshalJSON(t *testing.T) {
|
||||
g := New()
|
||||
gs := g.String()
|
||||
js, err := json.Marshal(g)
|
||||
if err != nil {
|
||||
t.Fatalf("failed to marshal with %v", err)
|
||||
}
|
||||
gsJSON := fmt.Sprintf("\"%s\"", gs)
|
||||
if gsJSON != string(js) {
|
||||
t.Fatalf("failed to marshal %s != %s", gsJSON, string(js))
|
||||
}
|
||||
}
|
||||
|
||||
func Test_MarshalJSON_Ptr(t *testing.T) {
|
||||
g := New()
|
||||
gs := g.String()
|
||||
js, err := json.Marshal(&g)
|
||||
if err != nil {
|
||||
t.Fatalf("failed to marshal with %v", err)
|
||||
}
|
||||
gsJSON := fmt.Sprintf("\"%s\"", gs)
|
||||
if gsJSON != string(js) {
|
||||
t.Fatalf("failed to marshal %s != %s", gsJSON, string(js))
|
||||
}
|
||||
}
|
||||
|
||||
func Test_MarshalJSON_Nested(t *testing.T) {
|
||||
type test struct {
|
||||
G GUID
|
||||
}
|
||||
t1 := test{
|
||||
G: New(),
|
||||
}
|
||||
gs := t1.G.String()
|
||||
js, err := json.Marshal(t1)
|
||||
if err != nil {
|
||||
t.Fatalf("failed to marshal with %v", err)
|
||||
}
|
||||
gsJSON := fmt.Sprintf("{\"G\":\"%s\"}", gs)
|
||||
if gsJSON != string(js) {
|
||||
t.Fatalf("failed to marshal %s != %s", gsJSON, string(js))
|
||||
}
|
||||
}
|
||||
|
||||
func Test_MarshalJSON_Nested_Ptr(t *testing.T) {
|
||||
type test struct {
|
||||
G *GUID
|
||||
}
|
||||
v := New()
|
||||
t1 := test{
|
||||
G: &v,
|
||||
}
|
||||
gs := t1.G.String()
|
||||
js, err := json.Marshal(t1)
|
||||
if err != nil {
|
||||
t.Fatalf("failed to marshal with %v", err)
|
||||
}
|
||||
gsJSON := fmt.Sprintf("{\"G\":\"%s\"}", gs)
|
||||
if gsJSON != string(js) {
|
||||
t.Fatalf("failed to marshal %s != %s", gsJSON, string(js))
|
||||
}
|
||||
}
|
||||
|
||||
func Test_UnmarshalJSON(t *testing.T) {
|
||||
g := New()
|
||||
js, _ := json.Marshal(g)
|
||||
var g2 GUID
|
||||
err := json.Unmarshal(js, &g2)
|
||||
if err != nil {
|
||||
t.Fatalf("failed to unmarshal with: %v", err)
|
||||
}
|
||||
if g != g2 {
|
||||
t.Fatalf("failed to unmarshal %s != %s", g, g2)
|
||||
}
|
||||
}
|
||||
|
||||
func Test_UnmarshalJSON_Nested(t *testing.T) {
|
||||
type test struct {
|
||||
G GUID
|
||||
}
|
||||
t1 := test{
|
||||
G: New(),
|
||||
}
|
||||
js, _ := json.Marshal(t1)
|
||||
var t2 test
|
||||
err := json.Unmarshal(js, &t2)
|
||||
if err != nil {
|
||||
t.Fatalf("failed to unmarshal with: %v", err)
|
||||
}
|
||||
if t1.G != t2.G {
|
||||
t.Fatalf("failed to unmarshal %v != %v", t1.G, t2.G)
|
||||
}
|
||||
}
|
||||
|
||||
func Test_UnmarshalJSON_Nested_Ptr(t *testing.T) {
|
||||
type test struct {
|
||||
G *GUID
|
||||
}
|
||||
v := New()
|
||||
t1 := test{
|
||||
G: &v,
|
||||
}
|
||||
js, _ := json.Marshal(t1)
|
||||
var t2 test
|
||||
err := json.Unmarshal(js, &t2)
|
||||
if err != nil {
|
||||
t.Fatalf("failed to unmarshal with: %v", err)
|
||||
}
|
||||
if *t1.G != *t2.G {
|
||||
t.Fatalf("failed to unmarshal %v != %v", t1.G, t2.G)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user