package com.orientechnologies.orient.test.database.auto; import com.orientechnologies.orient.core.id.ORID; import com.orientechnologies.orient.core.metadata.schema.OSchema; import com.orientechnologies.orient.core.record.impl.ODocument; import com.orientechnologies.orient.core.sql.OCommandSQL; import com.orientechnologies.orient.core.sql.query.OSQLSynchQuery; import org.testng.Assert; import org.testng.annotations.Optional; import org.testng.annotations.Parameters; import org.testng.annotations.Test; import java.util.ArrayList; import java.util.List; /** * @author Andrey Lomakin (a.lomakin-at-orientechnologies.com) * @since 3/21/14 */ @Test public class HideRecordTest extends DocumentDBBaseTest { @Parameters(value = "url") public HideRecordTest(@Optional String url) { super(url); } public void testMassiveRecordsHide() { final OSchema schema = database.getMetadata().getSchema(); if (!schema.existsClass("MassiveRecordsHide")) { schema.createClass("MassiveRecordsHide"); } final List<ORID> docs = new ArrayList<ORID>(); for (int i = 0; i < 100; i++) { final ODocument document = new ODocument("MassiveRecordsHide"); document.field("index", i); document.save(); docs.add(document.getIdentity()); } List<ORID> ridsToRemove = new ArrayList<ORID>(); for (int i = 0; i < 100; i += 2) { database.hide(docs.get(i)); ridsToRemove.add(docs.get(i)); } for (ORID ridToRemove : ridsToRemove) docs.remove(ridToRemove); final List<ODocument> result = database.query(new OSQLSynchQuery<ODocument>("select from MassiveRecordsHide")); Assert.assertEquals(result.size(), 50); for (ODocument resultDoc : result) { Assert.assertTrue(docs.remove(resultDoc.getIdentity())); } Assert.assertTrue(docs.isEmpty()); } public void testMassiveRecordsHideBySQL() { final OSchema schema = database.getMetadata().getSchema(); if (!schema.existsClass("MassiveRecordsHideBySQL")) { schema.createClass("MassiveRecordsHideBySQL"); } final List<ORID> docs = new ArrayList<ORID>(); for (int i = 0; i < 100; i++) { final ODocument document = new ODocument("MassiveRecordsHideBySQL"); document.field("index", i); document.save(); docs.add(document.getIdentity()); } List<ORID> ridsToRemove = new ArrayList<ORID>(); for (int i = 0; i < 100; i += 2) { final ODocument document = database.load(docs.get(i)); int result = (Integer) database.command(new OCommandSQL("hide from " + document.getIdentity())).execute(); Assert.assertEquals(result, 1); ridsToRemove.add(docs.get(i)); } for (ORID ridToRemove : ridsToRemove) docs.remove(ridToRemove); final List<ODocument> result = database.query(new OSQLSynchQuery<ODocument>("select from MassiveRecordsHideBySQL")); Assert.assertEquals(result.size(), 50); for (ODocument resultDoc : result) { Assert.assertTrue(docs.remove(resultDoc.getIdentity())); } Assert.assertTrue(docs.isEmpty()); } }