Ejemplo n.º 1
0
        public void TestCreateManyVertices()
        {
            using (TestDatabaseContext testContext = new TestDatabaseContext())
            {
                using (ODatabase database = new ODatabase(TestConnection.GlobalTestDatabaseAlias))
                {
                    // prerequisites
                    database
                    .Create.Class("TestVertexClass")
                    .Extends <OVertex>()
                    .Run();

                    for (int i = 0; i < 1000; i++)
                    {
                        OVertex testVertex = new OVertex();
                        testVertex.OClassName = "TestVertexClass";
                        testVertex.SetField("foo", "foo string value");
                        testVertex.SetField("bar", i);
                        database.Transaction.Add(testVertex);
                    }

                    database.Transaction.Commit();


                    var createdVertices = database.Select().From("V").ToList();
                    Assert.AreEqual(1000, createdVertices.Count);

                    for (int i = 0; i < 1000; i++)
                    {
                        Assert.AreEqual(i, createdVertices[i].GetField <int>("bar"));
                    }
                }
            }
        }
Ejemplo n.º 2
0
        private static OVertex CreateTestVertex(int iBar)
        {
            OVertex testVertex = new OVertex();

            testVertex.OClassName = "TestVertexClass";
            testVertex.SetField("foo", "foo string value");
            testVertex.SetField("bar", iBar);
            return(testVertex);
        }
Ejemplo n.º 3
0
        private bool ProcessBlock(Block block)
        {
            var blockTime = block.Header.BlockTime.LocalDateTime;

            using (var db = new ODatabase("localhost", 2424, "txgraph", ODatabaseType.Graph, "admin", "admin"))
            {
                db.DatabaseProperties.ORID = new ORID();
                var tx = db.Transaction;
                try
                {
                    foreach (var transaction in block.Transactions)
                    {
                        var vertex = new OVertex()
                        {
                            OClassName = "Transaction"
                        };
                        vertex.SetField("Hash", transaction.GetHash().ToString());
                        vertex.SetField("BlockTime", blockTime);
                        vertex.SetField("Coinbase", transaction.IsCoinBase);
                        for (var i = 0; i < transaction.Inputs.Count; i++)
                        {
                            var input = transaction.Inputs[i];
                            vertex.SetField($"INPUT{i}", $"{input.PrevOut.Hash}:{input.PrevOut.N}");
                        }
                        for (var i = 0; i < transaction.Outputs.Count; i++)
                        {
                            var output = transaction.Outputs[i];
                            vertex.SetField($"OUTPUT{i}", $"{i}:{GetAddress(output.ScriptPubKey)}:{output.Value.Satoshi}");
                        }
                        tx.Add(vertex);
                    }
                    tx.Commit();
                }
                catch (Exception e)
                {
                    if (e.Message.Contains("ORecordDuplicatedException"))
                    {
                        return(true); // duplicate tx ids existed in the early days of bitcoin
                    }
                    else
                    {
                        tx.Reset();
                        return(false);
                    }
                }
            }
            return(true);
        }
Ejemplo n.º 4
0
        public void TestUpdateVertex()
        {
            using (TestDatabaseContext testContext = new TestDatabaseContext())
            {
                ORID orid;
                using (ODatabase database = new ODatabase(TestConnection.GlobalTestDatabaseAlias))
                {
                    // prerequisites
                    database
                    .Create.Class("TestVertexClass")
                    .Extends <OVertex>()
                    .Run();

                    OVertex testVertex = new OVertex();
                    testVertex.OClassName = "TestVertexClass";
                    testVertex.SetField("foo", "foo string value");
                    testVertex.SetField("bar", 12345);

                    Assert.AreEqual(null, testVertex.ORID);

                    database.Transaction.Add(testVertex);

                    Assert.IsNotNull(testVertex.ORID);
                    Assert.IsTrue(testVertex.ORID.ClusterPosition < 0);
                    Assert.AreEqual(-2, testVertex.ORID.ClusterPosition);

                    database.Transaction.Commit();
                    orid = testVertex.ORID;
                }

                using (ODatabase database = new ODatabase(TestConnection.GlobalTestDatabaseAlias))
                {
                    OVertex v = database.Load.ORID(orid).Run().To <OVertex>();
                    v.SetField("foobar", "blah");
                    database.Transaction.Update(v);

                    database.Transaction.Commit();
                }

                using (ODatabase database = new ODatabase(TestConnection.GlobalTestDatabaseAlias))
                {
                    OVertex v = database.Load.ORID(orid).Run().To <OVertex>();
                    Assert.AreEqual("blah", v.GetField <string>("foobar"));
                }
            }
        }
        public void ShouldCreateVertexFromOVertex()
        {
            using (TestDatabaseContext testContext = new TestDatabaseContext())
            {
                using (ODatabase database = new ODatabase(TestConnection.GlobalTestDatabaseAlias))
                {
                    OVertex vertex = new OVertex();
                    vertex
                    .SetField("foo", "foo string value")
                    .SetField("bar", 12345);

                    OVertex createdVertex = database
                                            .Create.Vertex(vertex)
                                            .Run();

                    Assert.IsTrue(createdVertex.ORID != null);
                    Assert.AreEqual(createdVertex.OClassName, "V");
                    Assert.AreEqual(createdVertex.GetField <string>("foo"), vertex.GetField <string>("foo"));
                    Assert.AreEqual(createdVertex.GetField <int>("bar"), vertex.GetField <int>("bar"));
                }
            }
        }
Ejemplo n.º 6
0
        public void TestCreateVertex()
        {
            using (TestDatabaseContext testContext = new TestDatabaseContext())
            {
                using (ODatabase database = new ODatabase(TestConnection.GlobalTestDatabaseAlias))
                {
                    // prerequisites
                    database
                    .Create.Class("TestVertexClass")
                    .Extends <OVertex>()
                    .Run();

                    OVertex testVertex = new OVertex();
                    testVertex.OClassName = "TestVertexClass";
                    testVertex.SetField("foo", "foo string value");
                    testVertex.SetField("bar", 12345);

                    Assert.AreEqual(null, testVertex.ORID);

                    database.Transaction.Add(testVertex);

                    Assert.IsNotNull(testVertex.ORID);
                    Assert.IsTrue(testVertex.ORID.ClusterPosition < 0);
                    Assert.AreEqual(-2, testVertex.ORID.ClusterPosition);

                    database.Transaction.Commit();

                    Assert.IsNotNull(testVertex.ORID);
                    Assert.AreEqual(database.GetClusterIdFor("TestVertexClass"), testVertex.ORID.ClusterId);

                    var createdVertex = database.Load.ORID(testVertex.ORID).Run().To <OVertex>();

                    Assert.IsTrue(createdVertex.ORID != null);
                    Assert.AreEqual("TestVertexClass", createdVertex.OClassName);
                    Assert.AreEqual("foo string value", createdVertex.GetField <string>("foo"));
                    Assert.AreEqual(12345, createdVertex.GetField <int>("bar"));
                }

                using (ODatabase database = new ODatabase(TestConnection.GlobalTestDatabaseAlias))
                {
                    OVertex testVertex = new OVertex();
                    testVertex.OClassName = "TestVertexClass";
                    testVertex.SetField("foo", "foo string value");
                    testVertex.SetField("bar", 12345);

                    Assert.AreEqual(null, testVertex.ORID);

                    database.Transaction.Add(testVertex);

                    Assert.IsNotNull(testVertex.ORID);
                    Assert.IsTrue(testVertex.ORID.ClusterPosition < 0);
                    Assert.AreEqual(-2, testVertex.ORID.ClusterPosition);

                    database.Transaction.Commit();

                    Assert.IsNotNull(testVertex.ORID);
                    Assert.AreEqual(database.GetClusterIdFor("TestVertexClass"), testVertex.ORID.ClusterId);
                    Assert.AreNotEqual(-2, testVertex.ORID.ClusterPosition);

                    var createdVertex = database.Load.ORID(testVertex.ORID).Run().To <OVertex>();

                    Assert.IsTrue(createdVertex.ORID != null);
                    Assert.AreEqual(createdVertex.OClassName, "TestVertexClass");
                    Assert.AreEqual(createdVertex.GetField <string>("foo"), "foo string value");
                    Assert.AreEqual(createdVertex.GetField <int>("bar"), 12345);
                }
            }
        }
Ejemplo n.º 7
0
 static void Main(string[] args)
 {
     _server = new OServer(_hostname, _port, _rootUserName, _rootUserPassword);
     if (!_server.DatabaseExist(_DBname, OStorageType.PLocal))
     {
         _server.CreateDatabase(_DBname, ODatabaseType.Graph, OStorageType.PLocal);
         Console.WriteLine("Database " + _DBname + " created");
         //Connect to the DB
         OClient.CreateDatabasePool(
             _hostname,
             _port,
             _DBname,
             ODatabaseType.Graph,
             _username,
             _password,
             10,
             _aliasDB
             );
         Console.WriteLine("Connected to the DB " + _DBname);
         using (ODatabase database = new ODatabase(_aliasDB))
         {
             //Classes and properties creation
             database
             .Create
             .Class("Users")
             .Extends <OVertex>()
             .Run();
             database
             .Create
             .Property("userID", OType.Integer)
             .Class("users")
             .Run();
             //Populate the DB
             OVertex vertexUser = new OVertex();
             vertexUser.OClassName = "Users";
             vertexUser
             .SetField("userID", 1);
             OVertex createVertexUser = database
                                        .Create.Vertex(vertexUser)
                                        .Run();
             Console.WriteLine("Created vertex " + createVertexUser.OClassName + " with @rid " + createVertexUser.ORID + " and userID " + createVertexUser.GetField <int>("userID"));
         }
     }
     else
     {
         //Connection
         OClient.CreateDatabasePool(
             _hostname,
             _port,
             _DBname,
             ODatabaseType.Graph,
             _username,
             _password,
             10,
             _aliasDB
             );
         Console.WriteLine("Connected to the DB " + _DBname);
         using (ODatabase database = new ODatabase(_aliasDB))
         {
             database
             .Update()
             .Class("Users")
             .Set("userID", 2)
             .Upsert()
             .Where("userID")
             .Equals(2)
             .Run();
             Console.WriteLine("Operation executed");
         }
     }
 }