0

这个测试用例第一次会通过,但接下来会失败。我不知道为什么它在第二次执行插入方法后没有将列值更新为“value1”。

   [TestMethod]
    public void TestMethod()
    {

        client.set_keyspace(KEYSPACE);

        byte[] key = utf8Encoding.GetBytes("123456789");

        ColumnParent parent = new ColumnParent();
        parent.Column_family = "Users";

        Column column = new Column();
        column.Name = utf8Encoding.GetBytes("columnname1");
        column.Timestamp = DateTime.Now.Millisecond;
        column.Value = utf8Encoding.GetBytes("value1");

        // insert
        client.insert(key, parent, column, ConsistencyLevel.ONE);

        ColumnPath path = new ColumnPath();
        path.Column_family = "Users";
        path.Column = utf8Encoding.GetBytes("columnname1");

        // search
        ColumnOrSuperColumn returnedColumn = client.get(key, path, ConsistencyLevel.ONE);
        Assert.AreEqual("value1", utf8Encoding.GetString(returnedColumn.Column.Value));

        // update
        column.Timestamp = DateTime.Now.Millisecond;
        column.Value = utf8Encoding.GetBytes("value2");
        client.insert(key, parent, column, ConsistencyLevel.ONE);

        returnedColumn = client.get(key, path, ConsistencyLevel.ONE);
        Assert.AreEqual("value2", utf8Encoding.GetString(returnedColumn.Column.Value));
4

1 回答 1

-1

如果你在代码中连续调用两次,你需要确保你的时间戳是递增的。使用微秒分辨率并创建一个函数,该函数会记住上次返回的时间,如果下一次小于或等于上次返回的时间,则添加一个。

仅使用毫秒分辨率,所有时间戳可能都相同,因此 Cassandra 恢复为比较字节,因此 value2 获胜。

于 2013-03-27T05:27:55.703 回答