当前位置: 首页>>代码示例>>Golang>>正文


Golang rnglib_go.MakeSimpleRNG函数代码示例

本文整理汇总了Golang中github.com/jddixon/rnglib_go.MakeSimpleRNG函数的典型用法代码示例。如果您正苦于以下问题:Golang MakeSimpleRNG函数的具体用法?Golang MakeSimpleRNG怎么用?Golang MakeSimpleRNG使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了MakeSimpleRNG函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: TestInsert

func (s *XLSuite) TestInsert(c *C) {

	var (
		hc, bitmap      uint32
		lev             uint32
		idx             uint32
		flag, mask, pos uint32
		where           uint32
	)
	rng := xr.MakeSimpleRNG()
	perm := rng.Perm(32) // a random permutation of [0..32)
	var slice []byte

	for i := byte(0); i < 32; i++ {
		hc = uint32(perm[i])
		// insert the value into the hash slice in such a way as
		// to maintain order
		idx = (hc >> lev) & 0x1f
		c.Assert(idx, Equals, hc) // hc is restricted to that range
		where = s.insertHash(c, &slice, byte(idx))
		flag = uint32(1) << (idx + 1)
		mask = flag - 1
		//pos = intgr.BitCount(int(bitmap) & mask)
		pos = uint32(xu.BitCount32(bitmap & mask))
		occupied := uint32(1 << idx)
		bitmap |= occupied

		//fmt.Printf("%02d: hc %02x, idx %02x, mask 0x%08x, bitmap 0x%08x, pos %02d where %02d\n\n",
		//	i, hc, idx, mask, bitmap, pos, where)
		c.Assert(pos, Equals, where)
	}

}
开发者ID:jddixon,项目名称:ctries_go,代码行数:33,代码来源:insert_test.go

示例2: TestAllInterfaces

// Verify that 0.0.0.0 is acceptable as an address (meaning "listen
// on all interfaces")
//
func (s *XLSuite) TestAllInterfaces(c *C) {
	rng := xr.MakeSimpleRNG()
	var str string

	// test with port = 0 (meaning the system decides)
	str = "0.0.0.0:0"
	a, err := NewV4Address(str)
	c.Assert(err, IsNil)
	c.Assert(a.String(), Equals, str)

	// test with random port
	port := rng.Intn(256 * 256)
	str = fmt.Sprintf("0.0.0.0:%d", port)
	a, err = NewV4Address(str)
	c.Assert(err, IsNil)
	c.Assert(a.String(), Equals, str)

	// ABBREVIATED as [::]; test with port = 0
	str = "[::]:0"
	a, err = NewV4Address(str)
	c.Assert(err, IsNil)
	c.Assert(a.String(), Equals, "0.0.0.0:0")

	// test with random port
	port = rng.Intn(256 * 256)
	str = fmt.Sprintf("0.0.0.0:%d", port)
	a, err = NewV4Address(str)
	c.Assert(err, IsNil)
	c.Assert(a.String(), Equals, str)
}
开发者ID:jddixon,项目名称:xlTransport_go,代码行数:33,代码来源:v4_address_test.go

示例3: TestMakingPermutedKeys

func (s *XLSuite) TestMakingPermutedKeys(c *C) {

	rng := xr.MakeSimpleRNG()
	var w uint
	for w = uint(4); w < uint(7); w++ {
		fields, keys := s.makePermutedKeys(rng, w)
		flag := uint64(1 << w)
		mask := flag - 1
		maxDepth := 64 / w // rounding down
		fieldCount := uint(len(fields))
		// we are relying on Hashcode(), which has only 64 bits
		if maxDepth > fieldCount {
			maxDepth = fieldCount
		}
		for i := uint(0); i < maxDepth; i++ {
			bKey, err := NewBytesKey(keys[i])
			c.Assert(err, IsNil)
			hc := bKey.Hashcode()
			for j := uint(0); j <= i; j++ {
				ndx := hc & mask
				if uint(ndx) != uint(fields[j]) {
					fmt.Printf(
						"GLITCH: w %d keyset %d field[%2d] %02x ndx %02x\n",
						w, i, j, fields[j], ndx)
				}
				c.Assert(uint(ndx), Equals, uint(fields[j]))
				hc >>= w
			}
		}
	}
}
开发者ID:jddixon,项目名称:hamt_go,代码行数:31,代码来源:test_test.go

示例4: TestKeySelector64

func (s *XLSuite) TestKeySelector64(c *C) {

	rng := xr.MakeSimpleRNG()
	// m := uint(10 + rng.Intn(15))	// so 10..24
	s.doTestKeySelector64(c, rng, true, 24)
	s.doTestKeySelector64(c, rng, false, 24)
}
开发者ID:jddixon,项目名称:xlCrypto_go,代码行数:7,代码来源:key_selector_test.go

示例5: makeSomeUniqueKeys

func makeSomeUniqueKeys(N, K uint) (rawKeys [][]byte, bKeys []gh.BytesKey) {

	rng := xr.MakeSimpleRNG()
	rawKeys = make([][]byte, N)
	bKeys = make([]gh.BytesKey, N)
	keyMap := make(map[uint64]bool)

	for i := uint(0); i < N; i++ {
		var bKey gh.BytesKey
		key := make([]byte, K)
		for {
			rng.NextBytes(key)
			bKey, _ = gh.NewBytesKey(key)
			hc := bKey.Hashcode()
			_, ok := keyMap[hc]
			if !ok { // value is not in the map
				keyMap[hc] = true
				break
			}
		}
		rawKeys[i] = key
		bKeys[i] = bKey
	}
	return
}
开发者ID:jddixon,项目名称:hamt_go,代码行数:25,代码来源:highFindProfileHAMT.go

示例6: TestPow2_64

func (s *XLSuite) TestPow2_64(c *C) {
	if VERBOSITY > 0 {
		fmt.Println("TEST_POW2_64")
	}
	rng := xr.MakeSimpleRNG()
	_ = rng

	c.Assert(NextPow2_64(0), Equals, uint64(1))
	c.Assert(NextPow2_64(1), Equals, uint64(1))
	c.Assert(NextPow2_64(2), Equals, uint64(2))
	c.Assert(NextPow2_64(7), Equals, uint64(8))
	c.Assert(NextPow2_64(8), Equals, uint64(8))
	c.Assert(NextPow2_64(9), Equals, uint64(16))
	c.Assert(NextPow2_64(1023), Equals, uint64(1024))
	c.Assert(NextPow2_64(1024), Equals, uint64(1024))
	c.Assert(NextPow2_64(1025), Equals, uint64(2048))

	// Test all powers of 2
	n := uint64(4)
	for i := 2; i < 64; i++ {
		c.Assert(NextPow2_64(n), Equals, n)
		n <<= 1
	}

	// Test random values
	n = uint64(4)
	for i := 2; i < 63; i++ {
		lowBits := uint64(rng.Int63n(int64(n)))
		if lowBits != uint64(0) {
			c.Assert(NextPow2_64(n+lowBits), Equals, 2*n)
		}
		n <<= 1
	}
}
开发者ID:jddixon,项目名称:xlUtil_go,代码行数:34,代码来源:pow_test.go

示例7: TestHamtTopBottomIDMap

func (s *XLSuite) TestHamtTopBottomIDMap(c *C) {
	if VERBOSITY > 0 {
		fmt.Println("TEST_HAMT_TOP_BOTTOM_MAP")
	}
	var err error

	m, err := NewNewIDMapHAMT()
	c.Assert(err, IsNil)

	rng := xr.MakeSimpleRNG()
	topBNI, bottomBNI := s.makeTopAndBottomBNI(c, rng)
	bottomKey := bottomBNI.GetNodeID().Value()
	topKey := topBNI.GetNodeID().Value()

	err = m.Insert(topKey, topBNI)
	c.Assert(err, IsNil)
	err = m.Insert(bottomKey, bottomBNI)
	c.Assert(err, IsNil)
	entryCount, _, _ := m.Size()
	c.Assert(entryCount, Equals, uint(2))

	// insert a duplicate
	err = m.Insert(bottomKey, bottomBNI)
	c.Assert(err, IsNil)
	entryCount, _, _ = m.Size()
	c.Assert(entryCount, Equals, uint(2))

}
开发者ID:jddixon,项目名称:xlNodeID_go,代码行数:28,代码来源:idMapHAMT_test.go

示例8: TestSNode

func (s *XLSuite) TestSNode(c *C) {
	var err error
	rng := xr.MakeSimpleRNG()

	const COUNT = uint(8)
	keys := make([]BytesKey, COUNT)
	values := make([]interface{}, COUNT)
	hashCodes := make([]uint, COUNT)

	for i := uint(0); i < COUNT; i++ {
		length := 8 + rng.Intn(32) // so [8,40) bytes
		data := make([]byte, length)
		rng.NextBytes(data)
		key := NewBytesKey(data)
		var shc uint32
		var hc uint
		shc, err = key.Hashcode()
		hc = uint(shc)
		c.Assert(err, IsNil)
		keys[i] = *key
		hashCodes[i] = hc
		dummyVal := &DummyValue{i}
		values[i] = dummyVal
	}

	// a trivial test, presumably will be elaborated over time
	for i := uint(0); i < COUNT; i++ {
		var hc uint32
		hc, err = keys[i].Hashcode()
		c.Assert(uint(hc), Equals, hashCodes[i])
		expectedV := &DummyValue{n: i}
		c.Assert(values[i], DeepEquals, expectedV)
	}
}
开发者ID:jddixon,项目名称:ctries_go,代码行数:34,代码来源:sNode_test.go

示例9: NewU16x16

// Create a new 16x16 file system, ORing perm into the default permissions.
// If perm is 0, the default is to allow user and group access.
// If the root is U, then this creates U/, U/tmp, U/in, and the top-level
// hex directories U/x
func NewU16x16(path string, perm os.FileMode) (udir *U16x16, err error) {
	// TODO: validate path
	var (
		inDir, tmpDir string
	)
	err = os.MkdirAll(path, 0750|perm)
	if err == nil {
		inDir = filepath.Join(path, "in")
		err = os.MkdirAll(inDir, 0770|perm)
		if err == nil {
			tmpDir = filepath.Join(path, "tmp")
			err = os.MkdirAll(tmpDir, 0700)
			if err == nil {
				for i := 0; i < 16; i++ {
					hexDir := fmt.Sprintf("%x", i)
					hexPath := filepath.Join(path, hexDir)
					err = os.MkdirAll(hexPath, 0750|perm)
					if err != nil {
						break
					}
				}
			}
		}
	}
	udir = &U16x16{
		path:   path,
		rng:    xr.MakeSimpleRNG(),
		inDir:  inDir,
		tmpDir: tmpDir,
	}
	return
}
开发者ID:jddixon,项目名称:xlU_go,代码行数:36,代码来源:u16x16.go

示例10: TestReadWrite

//// DEBUG
//func dumpBuffer( title string, p*[]byte) {
//    length := len(*p)
//    fmt.Printf("%s ", title)
//    for i := 0; i < length; i++ {
//        fmt.Printf("%02x ", (*p)[i])
//    }
//    fmt.Print("\n")
//}
//// END
func (s *XLSuite) TestReadWrite(c *C) {
	const COUNT = 16
	const MAX_TYPE = 128
	rng := xr.MakeSimpleRNG()
	for i := 0; i < COUNT; i++ {
		tType := uint16(rng.NextInt32(MAX_TYPE))
		bufLen := 4 * (1 + int(rng.NextInt32(16)))
		value := make([]byte, bufLen)
		rng.NextBytes(value) // just adds noise
		tlv := new(TLV16)
		tlv.Init(tType, &value)

		// create a buffer, write TLV16 into it, read it back
		buffer := make([]byte, 4+bufLen)
		// XXX offset should be randomized
		offset := uint16(0)
		tlv.Encode(&buffer, offset)
		decoded := Decode(&buffer, offset)
		c.Assert(tType, Equals, decoded.Type())
		c.Assert(bufLen, Equals, int(decoded.Length()))
		//      // DEBUG
		//      dumpBuffer("value   ", &buffer)
		//      dumpBuffer("encoded ", decoded.Value())
		//      // END
		for j := 0; j < bufLen; j++ {
			c.Assert((*tlv.Value())[j], Equals, (*decoded.Value())[j])
		}
	}
}
开发者ID:jddixon,项目名称:xlProtocol_go,代码行数:39,代码来源:tlv16_test.go

示例11: TestParser

func (s *XLSuite) TestParser(c *C) {
	// fmt.Println("TEST_PARSER")
	rng := xr.MakeSimpleRNG()
	for i := 0; i < 16; i++ {
		s.doTestParser(c, rng)
	}
}
开发者ID:jddixon,项目名称:xlOverlay_go,代码行数:7,代码来源:parser_test.go

示例12: TestLeaf

func (s *XLSuite) TestLeaf(c *C) {
	const MIN_KEY_LEN = 8
	rng := xr.MakeSimpleRNG()
	_ = rng

	// a nil argument must cause an error
	p := 0
	gk := make([]byte, MIN_KEY_LEN)
	goodKey, err := NewBytesKey(gk)
	c.Assert(err, IsNil)

	sk := make([]byte, MIN_KEY_LEN-1)
	_, err = NewBytesKey(sk)
	// must fail - key is too short
	c.Assert(err, NotNil)

	_, err = NewLeaf(nil, &p)
	c.Assert(err, NotNil)

	_, err = NewLeaf(goodKey, nil)
	c.Assert(err, NotNil)

	leaf, err := NewLeaf(goodKey, &p)
	c.Assert(err, IsNil)
	c.Assert(leaf, NotNil)
	c.Assert(leaf.IsLeaf(), Equals, true)

	// XXX test a Table, IsLeaf() should return false
	// XXX STUB

}
开发者ID:jddixon,项目名称:hamt_go,代码行数:31,代码来源:leaf_test.go

示例13: TestByteBuffer

func (s *XLSuite) TestByteBuffer(c *C) {
	if VERBOSITY > 0 {
		fmt.Println("TEST_BYTE_BUFFER")
	}

	var soFar, totalSize int

	rng := xr.MakeSimpleRNG()
	count := 8 + rng.Intn(8)
	p := make([][]byte, count)  // we make this many little slices
	sizes := make([]int, count) // the length of each
	for i := 0; i < count; i++ {
		size := 16 + rng.Intn(16)
		sizes[i] = size
		p[i] = make([]byte, size)
		rng.NextBytes(p[i]) // fill the slice with random values
		totalSize = totalSize + size
	}
	capacity := 2 * totalSize
	b, err := NewByteBuffer(capacity)
	c.Assert(err, IsNil)
	c.Assert(b.Len(), Equals, 0)
	c.Assert(b.Cap(), Equals, capacity)

	for i := 0; i < count; i++ {
		n, err := b.Write(p[i])
		c.Assert(err, IsNil)
		c.Assert(n, Equals, sizes[i])
		soFar += n
		c.Assert(b.Len(), Equals, soFar)
	}
}
开发者ID:jddixon,项目名称:xgo_go,代码行数:32,代码来源:byte_buffer_test.go

示例14: TestBadLengths

func (s *XLSuite) TestBadLengths(c *C) {

	datum, err := xi.New(nil) // generates random NodeID

	rng := xr.MakeSimpleRNG()
	ndx := uint32(rng.Intn(256 * 256 * 256))
	okData := make([]byte, 256+rng.Intn(3))

	// verify nil datum causes error
	nilChunk, err := NewChunk(nil, ndx, okData)
	c.Assert(err, Equals, NilDatum)
	c.Assert(nilChunk, Equals, (*Chunk)(nil))

	// verify nil data causes error
	nilChunk, err = NewChunk(datum, ndx, nil)
	c.Assert(err, Equals, NilData)
	c.Assert(nilChunk, Equals, (*Chunk)(nil))

	// verify length of zero causes error
	zeroLenData := make([]byte, 0)
	lenZeroChunk, err := NewChunk(datum, ndx, zeroLenData)
	c.Assert(err, Equals, ZeroLengthChunk)
	c.Assert(lenZeroChunk, Equals, (*Chunk)(nil))

	// verify length > MAX_CHUNK_BYTES causes error
	bigData := make([]byte, MAX_CHUNK_BYTES+1+rng.Intn(3))
	tooBig, err := NewChunk(datum, ndx, bigData)
	c.Assert(err, Equals, ChunkTooLong)
	c.Assert(tooBig, Equals, (*Chunk)(nil))
}
开发者ID:jddixon,项目名称:xlProtocol_go,代码行数:30,代码来源:chunk_test.go

示例15: TestHamtFindID

func (s *XLSuite) TestHamtFindID(c *C) {
	if VERBOSITY > 0 {
		fmt.Println("TEST_HAMT_FIND_ID")
	}
	var err error

	m, err := NewNewIDMapHAMT()
	c.Assert(err, IsNil)

	rng := xr.MakeSimpleRNG()
	baseNode0123 := s.makeABNI(c, rng, "baseNode0123", 0, 1, 2, 3)
	baseNode1 := s.makeABNI(c, rng, "baseNode1", 1)
	baseNode12 := s.makeABNI(c, rng, "baseNode12", 1, 2)
	baseNode123 := s.makeABNI(c, rng, "baseNode123", 1, 2, 3)
	baseNode4 := s.makeABNI(c, rng, "baseNode4", 4)
	baseNode42 := s.makeABNI(c, rng, "baseNode42", 4, 2)
	baseNode423 := s.makeABNI(c, rng, "baseNode423", 4, 2, 3)
	baseNode5 := s.makeABNI(c, rng, "baseNode5", 5)
	baseNode6 := s.makeABNI(c, rng, "baseNode6", 6)
	baseNode62 := s.makeABNI(c, rng, "baseNode62", 6, 2)
	baseNode623 := s.makeABNI(c, rng, "baseNode623", 6, 2, 3)

	// TODO: randomize order in which baseNodes are added
	s.addIDToHAMT(c, m, baseNode123)
	s.addIDToHAMT(c, m, baseNode12)
	s.addIDToHAMT(c, m, baseNode1)

	s.addIDToHAMT(c, m, baseNode5)

	s.addIDToHAMT(c, m, baseNode4)
	s.addIDToHAMT(c, m, baseNode42)
	s.addIDToHAMT(c, m, baseNode423)

	s.addIDToHAMT(c, m, baseNode6)
	s.addIDToHAMT(c, m, baseNode623)
	s.addIDToHAMT(c, m, baseNode62)

	s.addIDToHAMT(c, m, baseNode0123)

	// adding duplicates should have no effect
	s.addIDToHAMT(c, m, baseNode4)
	s.addIDToHAMT(c, m, baseNode42)
	s.addIDToHAMT(c, m, baseNode423)

	// TODO: randomize order in which finding baseNodes is tested
	s.findIDInHAMT(c, m, baseNode0123)

	s.findIDInHAMT(c, m, baseNode1)
	s.findIDInHAMT(c, m, baseNode12)
	s.findIDInHAMT(c, m, baseNode123)

	s.findIDInHAMT(c, m, baseNode4)
	s.findIDInHAMT(c, m, baseNode42)
	s.findIDInHAMT(c, m, baseNode423)

	s.findIDInHAMT(c, m, baseNode6)
	s.findIDInHAMT(c, m, baseNode62)
	s.findIDInHAMT(c, m, baseNode623)
}
开发者ID:jddixon,项目名称:xlNodeID_go,代码行数:59,代码来源:idMapHAMT_test.go


注:本文中的github.com/jddixon/rnglib_go.MakeSimpleRNG函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。