use of org.apache.ignite.events.Event in project ignite by apache.
the class IgfsEventsAbstractSelfTest method testMoveFile.
/**
* Checks events on CRUD operations on file move.
*
* @throws Exception If failed.
*/
public void testMoveFile() throws Exception {
final List<Event> evtList = new ArrayList<>();
final int evtsCnt = 5 + 1;
final CountDownLatch latch = new CountDownLatch(evtsCnt);
grid(1).events().localListen(lsnr = new IgnitePredicate<Event>() {
@Override
public boolean apply(Event evt) {
log.info("Received event [evt=" + evt + ']');
evtList.add(evt);
latch.countDown();
return true;
}
}, EVTS_IGFS);
IgfsPath dir = new IgfsPath("/dir1/dir2");
IgfsPath file = new IgfsPath(dir, "file1");
// Will generate 2 EVT_IGFS_DIR_CREATED events + EVT_IGFS_FILE_CREATED_EVENT + OPEN + CLOSE.
igfs.create(file, true).close();
// Will generate 1 EVT_IGFS_FILE_RENAMED.
igfs.rename(file, dir.parent());
assertTrue(igfs.exists(new IgfsPath(dir.parent(), file.name())));
assertTrue(latch.await(10, TimeUnit.SECONDS));
assertEquals(evtsCnt, evtList.size());
IgfsEvent evt = (IgfsEvent) evtList.get(0);
assertEquals(EVT_IGFS_DIR_CREATED, evt.type());
assertEquals(new IgfsPath("/dir1"), evt.path());
evt = (IgfsEvent) evtList.get(1);
assertEquals(EVT_IGFS_DIR_CREATED, evt.type());
assertEquals(new IgfsPath("/dir1/dir2"), evt.path());
evt = (IgfsEvent) evtList.get(2);
assertEquals(EVT_IGFS_FILE_CREATED, evt.type());
assertEquals(new IgfsPath("/dir1/dir2/file1"), evt.path());
evt = (IgfsEvent) evtList.get(3);
assertEquals(EVT_IGFS_FILE_OPENED_WRITE, evt.type());
assertEquals(new IgfsPath("/dir1/dir2/file1"), evt.path());
evt = (IgfsEvent) evtList.get(4);
assertEquals(EVT_IGFS_FILE_CLOSED_WRITE, evt.type());
assertEquals(new IgfsPath("/dir1/dir2/file1"), evt.path());
assertEquals(0, evt.dataSize());
IgfsEvent evt4 = (IgfsEvent) evtList.get(5);
assertEquals(EVT_IGFS_FILE_RENAMED, evt4.type());
assertEquals(new IgfsPath("/dir1/dir2/file1"), evt4.path());
assertEquals(new IgfsPath("/dir1/file1"), evt4.newPath());
}
use of org.apache.ignite.events.Event in project ignite by apache.
the class IgfsEventsAbstractSelfTest method testSingleEmptyDir.
/**
* Checks events on CRUD operations on a single empty
* directory.
*
* @throws Exception If failed.
*/
public void testSingleEmptyDir() throws Exception {
final List<Event> evtList = new ArrayList<>();
final int evtsCnt = 1 + 1 + 0 + 1;
final CountDownLatch latch = new CountDownLatch(evtsCnt);
grid(1).events().localListen(lsnr = new IgnitePredicate<Event>() {
@Override
public boolean apply(Event evt) {
log.info("Received event [evt=" + evt + ']');
evtList.add(evt);
latch.countDown();
return true;
}
}, EVTS_IGFS);
IgfsPath dir = new IgfsPath("/dir1");
// Will generate EVT_IGFS_DIR_CREATED.
igfs.mkdirs(dir);
IgfsPath mvDir = new IgfsPath("/mvDir1");
// Will generate EVT_IGFS_DIR_RENAMED.
igfs.rename(dir, mvDir);
// Will generate no event.
assertFalse(igfs.delete(dir, true));
// Will generate EVT_IGFS_DIR_DELETED events.
assertTrue(igfs.delete(mvDir, true));
assertTrue(latch.await(10, TimeUnit.SECONDS));
assertEquals(evtsCnt, evtList.size());
IgfsEvent evt = (IgfsEvent) evtList.get(0);
assertEquals(EVT_IGFS_DIR_CREATED, evt.type());
assertEquals(new IgfsPath("/dir1"), evt.path());
assertTrue(evt.isDirectory());
evt = (IgfsEvent) evtList.get(1);
assertEquals(EVT_IGFS_DIR_RENAMED, evt.type());
assertEquals(new IgfsPath("/dir1"), evt.path());
assertEquals(new IgfsPath("/mvDir1"), evt.newPath());
assertTrue(evt.isDirectory());
evt = (IgfsEvent) evtList.get(2);
assertEquals(EVT_IGFS_DIR_DELETED, evt.type());
assertEquals(new IgfsPath("/mvDir1"), evt.path());
assertTrue(evt.isDirectory());
}
use of org.apache.ignite.events.Event in project ignite by apache.
the class IgfsEventsAbstractSelfTest method testSingleFileOverwrite.
/**
* Checks events on CRUD operations with single
* file overwrite.
*
* @throws Exception If failed.
*/
public void testSingleFileOverwrite() throws Exception {
final List<Event> evtList = new ArrayList<>();
// NB: In case of create-overwrite FILE_PURGED event will be sent in PRIMARY IGFS mode only.
final boolean awaitForPurgeEvt = grid(1).configuration().getFileSystemConfiguration()[0].getDefaultMode() == IgfsMode.PRIMARY;
final int evtsCnt = 1 + 4 + (awaitForPurgeEvt ? 1 : 0);
final CountDownLatch latch = new CountDownLatch(evtsCnt);
grid(1).events().localListen(lsnr = new IgnitePredicate<Event>() {
@Override
public boolean apply(Event evt) {
log.info("Received event [evt=" + evt + ']');
evtList.add(evt);
latch.countDown();
return true;
}
}, EVTS_IGFS);
final IgfsPath file = new IgfsPath("/file1");
// Will generate create, open and close events.
igfs.create(file, false).close();
// Will generate PURGE (async), OPEN_WRITE & close events.
igfs.create(file, true).close();
try {
// Won't generate any event.
igfs.create(file, false).close();
} catch (Exception ignore) {
// No-op.
}
assertTrue(latch.await(10, TimeUnit.SECONDS));
assertEquals(evtsCnt, evtList.size());
final IgfsPath file1 = new IgfsPath("/file1");
IgfsEvent evt = (IgfsEvent) evtList.get(0);
assertEquals(EVT_IGFS_FILE_CREATED, evt.type());
assertEquals(file1, evt.path());
evt = (IgfsEvent) evtList.get(1);
assertEquals(EVT_IGFS_FILE_OPENED_WRITE, evt.type());
assertEquals(file1, evt.path());
evt = (IgfsEvent) evtList.get(2);
assertEquals(EVT_IGFS_FILE_CLOSED_WRITE, evt.type());
assertEquals(file1, evt.path());
assertEquals(0, evt.dataSize());
assertOneToOne(evtList.subList(3, evtsCnt), new P1<Event>() {
@Override
public boolean apply(Event e) {
IgfsEvent e0 = (IgfsEvent) e;
return e0.type() == EVT_IGFS_FILE_PURGED && e0.path().equals(file1);
}
}, new P1<Event>() {
@Override
public boolean apply(Event e) {
IgfsEvent e0 = (IgfsEvent) e;
return e0.type() == EVT_IGFS_FILE_OPENED_WRITE && e0.path().equals(file1);
}
}, new P1<Event>() {
@Override
public boolean apply(Event e) {
IgfsEvent e0 = (IgfsEvent) e;
return e0.type() == EVT_IGFS_FILE_CLOSED_WRITE && e0.path().equals(file1);
}
});
}
use of org.apache.ignite.events.Event in project ignite by apache.
the class IgfsEventsAbstractSelfTest method testNestedEmptyDirs.
/**
* Checks events on CRUD operations with multiple
* empty directories.
*
* @throws Exception If failed.
*/
public void testNestedEmptyDirs() throws Exception {
final List<Event> evtList = new ArrayList<>();
final int evtsCnt = 2 + 1;
final CountDownLatch latch = new CountDownLatch(evtsCnt);
grid(1).events().localListen(lsnr = new IgnitePredicate<Event>() {
@Override
public boolean apply(Event evt) {
log.info("Received event [evt=" + evt + ']');
evtList.add(evt);
latch.countDown();
return true;
}
}, EVTS_IGFS);
IgfsPath dir = new IgfsPath("/dir1/dir2");
assertFalse(igfs.exists(dir.parent()));
// Will generate 2 EVT_IGFS_DIR_RENAMED events.
igfs.mkdirs(dir);
// Will generate EVT_IGFS_DIR_DELETED event.
assertTrue(igfs.delete(dir.parent(), true));
assertTrue(latch.await(10, TimeUnit.SECONDS));
assertEquals(evtsCnt, evtList.size());
IgfsEvent evt = (IgfsEvent) evtList.get(0);
assertEquals(EVT_IGFS_DIR_CREATED, evt.type());
assertEquals(new IgfsPath("/dir1"), evt.path());
evt = (IgfsEvent) evtList.get(1);
assertEquals(EVT_IGFS_DIR_CREATED, evt.type());
assertEquals(new IgfsPath("/dir1/dir2"), evt.path());
evt = (IgfsEvent) evtList.get(2);
assertEquals(EVT_IGFS_DIR_DELETED, evt.type());
assertEquals(new IgfsPath("/dir1"), evt.path());
}
use of org.apache.ignite.events.Event in project ignite by apache.
the class ClusterNodeMetricsSelfTest method fillCache.
/**
* Fill cache with values.
* @param cache Ignite cache.
* @throws Exception If failed.
*/
private void fillCache(final IgniteCache<Integer, Object> cache) throws Exception {
final byte[] val = new byte[VAL_SIZE];
for (int i = 0; i < MAX_VALS_AMOUNT * 4; i++) cache.put(i, val);
// Let metrics update twice.
final CountDownLatch latch = new CountDownLatch(2);
grid().events().localListen(new IgnitePredicate<Event>() {
@Override
public boolean apply(Event evt) {
assert evt.type() == EVT_NODE_METRICS_UPDATED;
latch.countDown();
return true;
}
}, EVT_NODE_METRICS_UPDATED);
// Wait for metrics update.
latch.await();
}
Aggregations