| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- package gocql
- import (
- "bytes"
- "fmt"
- "testing"
- "time"
- )
- func TestConnect(t *testing.T) {
- db := NewSession(Config{
- Nodes: []string{
- "127.0.0.1",
- },
- Keyspace: "system",
- Consistency: ConQuorum,
- })
- defer db.Close()
- for i := 0; i < 5; i++ {
- db.Query("SELECT keyspace_name FROM schema_keyspaces WHERE keyspace_name = ?",
- "system_auth").Exec()
- }
- var keyspace string
- var durable bool
- iter := db.Query("SELECT keyspace_name, durable_writes FROM schema_keyspaces").Iter()
- for iter.Scan(&keyspace, &durable) {
- fmt.Println("Keyspace:", keyspace, durable)
- }
- if err := iter.Close(); err != nil {
- fmt.Println(err)
- }
- }
- type Page struct {
- Title string
- RevID int
- Body string
- Hits int
- Protected bool
- Modified time.Time
- Attachment []byte
- }
- var pages = []*Page{
- &Page{"Frontpage", 1, "Hello world!", 0, false,
- time.Date(2012, 8, 20, 10, 0, 0, 0, time.UTC), []byte{}},
- &Page{"Frontpage", 2, "Hello modified world!", 0, false,
- time.Date(2012, 8, 22, 10, 0, 0, 0, time.UTC), []byte("img data\x00")},
- &Page{"LoremIpsum", 3, "Lorem ipsum dolor sit amet", 12,
- true, time.Date(2012, 8, 22, 10, 0, 8, 0, time.UTC), []byte{}},
- }
- func TestWiki(t *testing.T) {
- db := NewSession(Config{
- Nodes: []string{"localhost"},
- Consistency: ConQuorum,
- })
- if err := db.Query("DROP KEYSPACE gocql_wiki").Exec(); err != nil {
- t.Log("DROP KEYSPACE:", err)
- }
- if err := db.Query(`CREATE KEYSPACE gocql_wiki
- WITH replication = {
- 'class' : 'SimpleStrategy',
- 'replication_factor' : 1
- }`).Exec(); err != nil {
- t.Fatal("CREATE KEYSPACE:", err)
- }
- if err := db.Query("USE gocql_wiki").Exec(); err != nil {
- t.Fatal("USE:", err)
- }
- if err := db.Query(`CREATE TABLE page (
- title varchar,
- revid int,
- body varchar,
- hits int,
- protected boolean,
- modified timestamp,
- attachment blob,
- PRIMARY KEY (title, revid)
- )`).Exec(); err != nil {
- t.Fatal("CREATE TABLE:", err)
- }
- for _, p := range pages {
- if err := db.Query(`INSERT INTO page (title, revid, body, hits,
- protected, modified, attachment) VALUES (?, ?, ?, ?, ?, ?, ?)`,
- p.Title, p.RevID, p.Body, p.Hits, p.Protected, p.Modified,
- p.Attachment).Exec(); err != nil {
- t.Fatal("INSERT:", err)
- }
- }
- var count int
- if err := db.Query("SELECT count(*) FROM page").Scan(&count); err != nil {
- t.Fatal("COUNT:", err)
- }
- if count != len(pages) {
- t.Fatalf("COUNT: expected %d got %d", len(pages), count)
- }
- for _, page := range pages {
- qry := db.Query(`SELECT title, revid, body, hits, protected,
- modified, attachment
- FROM page WHERE title = ? AND revid = ?`, page.Title, page.RevID)
- var p Page
- if err := qry.Scan(&p.Title, &p.RevID, &p.Body, &p.Hits, &p.Protected,
- &p.Modified, &p.Attachment); err != nil {
- t.Fatal("SELECT PAGE:", err)
- }
- p.Modified = p.Modified.In(time.UTC)
- if page.Title != p.Title || page.RevID != p.RevID ||
- page.Body != p.Body || page.Modified != p.Modified ||
- page.Hits != p.Hits || page.Protected != p.Protected ||
- !bytes.Equal(page.Attachment, p.Attachment) {
- t.Errorf("expected %#v got %#v", *page, p)
- }
- }
- }
|