本文整理匯總了Golang中ddtxn/dlog.Printf函數的典型用法代碼示例。如果您正苦於以下問題:Golang Printf函數的具體用法?Golang Printf怎麽用?Golang Printf使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了Printf函數的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: ViewUserInfoTxn
func ViewUserInfoTxn(t Query, tx ETransaction) (*Result, error) {
uk := UserKey(t.U1)
urec, err := tx.Read(uk)
if err != nil {
if err == ESTASH {
dlog.Printf("User %v stashed\n", t.U1)
return nil, ESTASH
} else if err == EABORT {
return nil, EABORT
} else if err == ENOKEY {
dlog.Printf("No user? %v\n", t.U1)
if tx.Commit() == 0 {
return nil, EABORT
} else {
return nil, ENORETRY
}
} else {
log.Fatalf("view user err: %v\n", err)
}
}
_ = urec.Value().(*User)
if tx.Commit() == 0 {
return nil, EABORT
}
var r *Result = nil
if *Allocate {
r = &Result{urec.Value()}
}
return r, nil
}
示例2: BenchmarkRead
func BenchmarkRead(b *testing.B) {
runtime.GOMAXPROCS(4)
b.StopTimer()
nb := 10000
np := 100
n := 4
s := NewStore()
// Load
for i := 0; i < np; i++ {
s.CreateKey(ProductKey(i), int32(0), SUM)
}
for i := 0; i < nb; i++ {
s.CreateKey(UserKey(uint64(i)), "x", WRITE)
}
c := NewCoordinator(n, s)
val := make([]int32, np)
read_rate := 50
var wg sync.WaitGroup
b.StartTimer()
for p := 0; p < n; p++ {
wg.Add(1)
go func(id int) {
w := c.Workers[id]
for i := 0; i < b.N/3; i++ {
p := ProductKey(i % np)
u := UserKey(uint64(i % nb))
amt := int32(rand.Intn(100))
var tx Query
rr := rand.Intn(100)
if rr >= read_rate {
tx = Query{TXN: D_BUY, K1: u, K2: p, A: amt, W: nil, T: 0}
_, err := w.One(tx)
if err == nil {
atomic.AddInt32(&val[i%np], amt)
}
} else {
tx = Query{TXN: D_READ_ONE, K1: p, W: make(chan struct {
R *Result
E error
}), T: 0}
_, err := w.One(tx)
if err == ESTASH {
dlog.Printf("client [%v] waiting for %v; epoch %v\n", w.ID, i%np, w.epoch)
<-tx.W
}
}
}
wg.Done()
}(p)
}
dlog.Printf("Waiting on outer\n")
wg.Wait()
b.StopTimer()
c.Finish()
Validate(c, s, nb, np, val, b.N)
}
示例3: PutCommentTxn
func PutCommentTxn(t Query, tx ETransaction) (*Result, error) {
var r *Result = nil
touser := t.U1
item := t.U2
tok := UserKey(touser)
torec, err := tx.Read(tok)
if err != nil {
if err == ESTASH {
dlog.Printf("User key for user %v stashed\n", touser)
return nil, ESTASH
} else if err == EABORT {
return nil, EABORT
} else if err == ENOKEY {
dlog.Printf("No user? %v\n", touser)
if tx.Commit() == 0 {
return nil, EABORT
} else {
return nil, ENORETRY
}
} else {
log.Fatalf("err %v\n", err)
}
}
nickname := torec.Value().(*User).Nickname
ik := ItemKey(item)
irec, err := tx.Read(ik)
if err != nil {
if err == ESTASH {
dlog.Printf("Item key %v stashed\n", item)
return nil, ESTASH
} else if err == EABORT {
return nil, EABORT
} else if err == ENOKEY {
dlog.Printf("PutCommentTxn: No item? %v\n", item)
if tx.Commit() == 0 {
return nil, EABORT
} else {
return nil, ENORETRY
}
} else {
log.Fatalf("err %v\n", err)
}
}
itemname := irec.Value().(*Item).Name
if tx.Commit() == 0 {
return r, EABORT
}
if *Allocate {
r = &Result{
&struct {
nick string
iname string
}{nickname, itemname},
}
}
return r, nil
}
示例4: Populate
func (b *Buy) Populate(s *ddtxn.Store, ex *ddtxn.ETransaction) {
for i := 0; i < b.nbidders; i++ {
k := ddtxn.ProductKey(i)
s.CreateKey(k, int32(0), ddtxn.SUM)
}
dlog.Printf("Created %v products; np: %v\n", b.nbidders, b.nproducts)
for i := 0; i < b.nbidders; i++ {
k := ddtxn.UserKey(uint64(i))
s.CreateKey(k, "x", ddtxn.WRITE)
}
dlog.Printf("Created %v bidders\n", b.nbidders)
dlog.Printf("Done with Populate")
}
示例5: RegisterUserTxn
func RegisterUserTxn(t Query, tx ETransaction) (*Result, error) {
region := t.U1
nickname := t.U2
var r *Result = nil
var n uint64
var nick Key
if !*Allocate || nickname == 0 {
n = tx.UID('u')
nick = NicknameKey(tx.UID('d'))
} else {
n = nickname
nick = NicknameKey(n)
}
u := UserKey(n)
user := &User{
ID: n,
Name: "xxxxxxx",
Nickname: string(nickname),
Region: region,
}
tx.MaybeWrite(nick)
br, err := tx.Read(nick)
var val uint64 = 0
if br != nil && br.exists {
val = br.Value().(uint64)
}
if err != ENOKEY && val != 0 {
// Someone else is using this nickname
dlog.Printf("Nickname taken %v %v\n", nickname, nick)
tx.Abort()
return nil, ENORETRY
}
tx.Write(u, user, WRITE)
tx.Write(nick, nickname, WRITE)
if tx.Commit() == 0 {
dlog.Printf("RegisterUser() Abort\n")
return nil, EABORT
}
if *Allocate {
r = &Result{uint64(n)}
// dlog.Printf("Registered user %v %v\n", nickname, n)
}
return r, nil
}
示例6: Apply
// Used during "merge" phase, along with br.mu
func (br *BRecord) Apply(val Value) {
if br == nil {
dlog.Printf("Nil record %v %v\n", val, br)
}
switch br.key_type {
case SUM:
delta := val.(int32)
atomic.AddInt32(&br.int_value, delta)
case MAX:
delta := val.(int32)
br.mu.Lock()
defer br.mu.Unlock()
if br.int_value < delta {
br.int_value = delta
}
case WRITE:
br.mu.Lock()
defer br.mu.Unlock()
br.value = val
case LIST:
br.mu.Lock()
defer br.mu.Unlock()
entries := val.([]Entry)
br.listApply(entries)
case OOWRITE:
br.mu.Lock()
defer br.mu.Unlock()
x := val.(Overwrite)
if br.int_value < x.i {
br.int_value = x.i
br.value = x.v
}
}
}
示例7: NewCoordinator
func NewCoordinator(n int, s *Store) *Coordinator {
c := &Coordinator{
n: n,
Workers: make([]*Worker, n),
epochTID: EPOCH_INCR,
wepoch: make([]chan TID, n),
wsafe: make([]chan TID, n),
wgo: make([]chan TID, n),
wdone: make([]chan TID, n),
Done: make(chan chan bool),
Accelerate: make(chan bool),
Coordinate: false,
PotentialPhaseChanges: 0,
to_remove: make(map[Key]bool),
Finished: make([]bool, n),
}
for i := 0; i < n; i++ {
c.wepoch[i] = make(chan TID)
c.wsafe[i] = make(chan TID)
c.wgo[i] = make(chan TID)
c.wdone[i] = make(chan TID)
c.Finished[i] = false
c.Workers[i] = NewWorker(i, s, c)
}
c.Finished = make([]bool, n)
dlog.Printf("[coordinator] %v workers\n", n)
go c.Process()
return c
}
示例8: Validate
func (b *Buy) Validate(s *ddtxn.Store, nitr int) bool {
good := true
zero_cnt := 0
for j := 0; j < b.nproducts; j++ {
var x int32
k := ddtxn.ProductKey(j)
v, err := s.Get(k)
if err != nil {
if b.validate[j] != 0 {
fmt.Printf("Validating key %v failed; store: none should have: %v\n", k, b.validate[j])
good = false
}
continue
}
x = v.Value().(int32)
if x != b.validate[j] {
fmt.Printf("Validating key %v failed; store: %v should have: %v\n", k, x, b.validate[j])
good = false
}
if x == 0 {
zero_cnt++
}
}
if zero_cnt == b.nproducts && nitr > 10 {
fmt.Printf("Bad: all zeroes!\n")
dlog.Printf("Bad: all zeroes!\n")
good = false
}
return good
}
示例9: BenchmarkBuy
func BenchmarkBuy(b *testing.B) {
runtime.GOMAXPROCS(8)
b.StopTimer()
nb := 10000
np := 100
n := 8
s := NewStore()
// Load
for i := 0; i < np; i++ {
s.CreateKey(ProductKey(i), int32(0), MAX)
}
for i := 0; i < nb; i++ {
s.CreateKey(UserKey(uint64(i)), "x", WRITE)
}
c := NewCoordinator(n, s)
val := make([]int32, np)
var wg sync.WaitGroup
b.StartTimer()
for p := 0; p < n; p++ {
wg.Add(1)
go func(id int) {
w := c.Workers[id]
for i := 0; i < b.N/3; i++ {
p := ProductKey(i % np)
u := UserKey(uint64(i % nb))
amt := int32(rand.Intn(100))
tx := Query{TXN: D_BUY, K1: u, A: amt, K2: p, W: nil, T: 0}
_, err := w.One(tx)
if err == nil {
atomic.AddInt32(&val[i%np], amt)
}
}
wg.Done()
}(p)
}
dlog.Printf("Waiting on outer\n")
wg.Wait()
dlog.Printf("done\n")
b.StopTimer()
c.Finish()
Validate(c, s, nb, np, val, b.N)
//PrintLockCounts(s, nb, np, false)
}
示例10: TestRandN
func TestRandN(t *testing.T) {
var seed uint32 = uint32(1)
dlog.Printf("seed %v\n", seed)
for i := 0; i < 1000; i++ {
x := RandN(&seed, 10)
// No idea how to test a random number generator, just look at the results for now.
dlog.Println(x, seed)
_ = x
}
}
示例11: StoreCommentTxn
func StoreCommentTxn(t Query, tx ETransaction) (*Result, error) {
touser := t.U1
fromuser := t.U2
item := t.U3
comment_s := t.S1
rating := t.U4
n := tx.UID('c')
com := CommentKey(n)
comment := &Comment{
ID: n,
From: fromuser,
To: touser,
Rating: rating,
Comment: comment_s,
Item: item,
Date: 11,
}
tx.Write(com, comment, WRITE)
rkey := RatingKey(touser)
err := tx.WriteInt32(rkey, int32(rating), SUM)
if err != nil {
dlog.Printf("Comment abort %v\n", t)
tx.Abort()
return nil, err
}
if tx.Commit() == 0 {
dlog.Printf("Comment abort %v\n", t)
return nil, EABORT
}
var r *Result = nil
if *Allocate {
r = &Result{uint64(n)}
dlog.Printf("%v Comment %v %v\n", touser, fromuser, item)
}
return r, nil
}
示例12: Test2RandN
func Test2RandN(t *testing.T) {
n := 0
var local_seed uint32 = uint32(n + 1)
portion_sz := 100
dlog.Printf("LOCAL: %v\n", local_seed)
j := 0
for {
select {
default:
var bidder int
rand := RandN(&local_seed, uint32(portion_sz))
lb := int(rand)
bidder = lb + n*portion_sz
amt := int(RandN(&local_seed, 10))
dlog.Printf("%v rand: %v bidder: %v local: %v amt: %v\n", n, rand, bidder, local_seed, amt)
j++
if j > 100 {
return
}
}
}
}
示例13: CreateMuRLockedKey
func (s *Store) CreateMuRLockedKey(k Key, kt KeyType) (*BRecord, error) {
br := MakeBR(k, nil, kt)
br.SRLock()
if *GStore {
ok := s.gstore.PutIfMissing(gotomic.Key(k), unsafe.Pointer(br))
if !ok {
dlog.Printf("Key already exists %v\n", k)
return nil, EEXISTS
}
} else {
chunk := s.store[k[0]]
chunk.Lock()
_, ok := chunk.rows[k]
if ok {
chunk.Unlock()
dlog.Printf("Key already exists %v\n", k)
return nil, EEXISTS
}
chunk.rows[k] = br
chunk.Unlock()
}
return br, nil
}
示例14: Validate
func Validate(c *Coordinator, s *Store, nkeys int, nproducts int, val []int32, n int) bool {
good := true
dlog.Printf("Validate start, store at %x\n", c.GetEpoch())
zero_cnt := 0
for j := 0; j < nproducts; j++ {
var x int32
k := ProductKey(j)
v, err := s.getKey(k, nil)
if err != nil {
if val[j] != 0 {
fmt.Printf("Validating key %v failed; store: none should have: %v\n", k, val[j])
dlog.Printf("Validating key %v failed; store: none should have: %v\n", k, val[j])
good = false
}
continue
}
x = v.Value().(int32)
if x != val[j] {
dlog.Printf("Validating key %v failed; store: %v should have: %v\n", k, x, val[j])
good = false
}
if x == 0 {
//dlog.Printf("Saying x is zero %v %v\n", x, zero_cnt)
zero_cnt++
}
}
if zero_cnt == nproducts && n > 10 {
fmt.Printf("Bad: all zeroes!\n")
dlog.Printf("Bad: all zeroes!\n")
good = false
}
dlog.Printf("Done validating\n")
if !good {
fmt.Printf("Validating failed\n")
}
return good
}
示例15: compute
func compute(w *Worker, txn int) (int64, int64) {
var total int64
var sum int64
var i int64
for i = 0; i < TIMES; i++ {
total = total + w.times[txn][i]
sum = sum + (w.times[txn][i] * i)
}
total = total + w.tooLong[txn]
sum = sum + w.tooLong[txn]*10000000
var x99 int64 = int64(float64(total) * .99)
var y99 int64
var v99 int64
var buckets [TIMES / 1000]int64
for i = 0; i < TIMES; i++ {
buckets[i/1000] += w.times[txn][i]
y99 = y99 + w.times[txn][i]
if y99 >= x99 {
v99 = i
break
}
}
if total == 0 {
log.Fatalf("No latency recorded\n")
}
dlog.Printf("%v avg: %v us; 99: %v us, x99: %v, sum: %v, total: %v \n", txn, sum/total, v99, x99, sum, total)
var one int64
var ten int64
var hundred int64
var more int64
for i = 0; i < TIMES/1000; i++ {
if i == 0 {
one += buckets[i]
} else if i < 10 {
ten += buckets[i]
} else if i < 100 {
hundred += buckets[i]
} else {
more += buckets[i]
}
}
fmt.Printf("Txn %v\n Less than 1ms: %v\n 1-10ms: %v\n 10-100ms: %v\n 100ms-10s: %v\n Greater than 10s: %v\n", txn, one, ten, hundred, more, w.tooLong[txn])
total_time_in_ms := (one/2 + 5*ten + 55*100 + 15000*more)
fmt.Printf("Rough total time in ms: %v\n", total_time_in_ms)
return sum / total, v99
}