func TestAccounts(t *testing.T) { c, err := createClient(t, false) th.AssertNoErr(t, err) updateHeaders, err := raxAccounts.Update(c, raxAccounts.UpdateOpts{Metadata: map[string]string{"white": "mountains"}}).Extract() th.AssertNoErr(t, err) t.Logf("Update Account Response Headers: %+v\n", updateHeaders) defer func() { updateres := raxAccounts.Update(c, raxAccounts.UpdateOpts{Metadata: map[string]string{"white": ""}}) th.AssertNoErr(t, updateres.Err) metadata, err := raxAccounts.Get(c).ExtractMetadata() th.AssertNoErr(t, err) t.Logf("Metadata from Get Account request (after update reverted): %+v\n", metadata) th.CheckEquals(t, metadata["White"], "") }() getResp := raxAccounts.Get(c) th.AssertNoErr(t, getResp.Err) getHeaders, _ := getResp.Extract() t.Logf("Get Account Response Headers: %+v\n", getHeaders) metadata, _ := getResp.ExtractMetadata() t.Logf("Metadata from Get Account request (after update): %+v\n", metadata) th.CheckEquals(t, metadata["White"], "mountains") }
func (s *Swift) GetContainer() (container Container, err error) { cerr := make(chan error) m := &sync.Mutex{} container = Container{} // get account quota go func(mm *sync.Mutex) { account := accounts.Get(s.client) headers, err := account.ExtractHeader() if err != nil { cerr <- err return } var quota uint64 strval := headers.Get("X-Account-Meta-Quota-Bytes") if strval != "" { quota, err = strconv.ParseUint(strval, 10, 64) if err != nil { quota = DEFAULT_ACCOUNT_QUOTA } } else { quota = DEFAULT_ACCOUNT_QUOTA } m.Lock() container.Quota = quota m.Unlock() cerr <- nil }(m) // get container used go func(mm *sync.Mutex) { var strval string result := containers.Get(s.client, s.containerName) if result.Err != nil { cerr <- result.Err return } headers, err := result.ExtractHeader() if err != nil { cerr <- err return } var used, count uint64 strval = headers.Get("X-Container-Bytes-Used") if strval != "" { if used, err = strconv.ParseUint(strval, 10, 64); err != nil { used = 0 } } strval = headers.Get("X-Container-Object-Count") if strval != "" { if count, err = strconv.ParseUint(strval, 10, 64); err != nil { count = 0 } } m.Lock() container.Used = used container.Count = count m.Unlock() cerr <- nil }(m) var i = 0 for i < 2 { if err = <-cerr; err != nil { return container, err } i++ } return container, nil }