Search in sources :

Example 66 with Event

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());
}
Also used : IgfsEvent(org.apache.ignite.events.IgfsEvent) IgnitePredicate(org.apache.ignite.lang.IgnitePredicate) ArrayList(java.util.ArrayList) Event(org.apache.ignite.events.Event) IgfsEvent(org.apache.ignite.events.IgfsEvent) CountDownLatch(java.util.concurrent.CountDownLatch)

Example 67 with Event

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());
}
Also used : IgfsEvent(org.apache.ignite.events.IgfsEvent) IgnitePredicate(org.apache.ignite.lang.IgnitePredicate) ArrayList(java.util.ArrayList) Event(org.apache.ignite.events.Event) IgfsEvent(org.apache.ignite.events.IgfsEvent) CountDownLatch(java.util.concurrent.CountDownLatch)

Example 68 with Event

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);
        }
    });
}
Also used : IgfsEvent(org.apache.ignite.events.IgfsEvent) IgnitePredicate(org.apache.ignite.lang.IgnitePredicate) ArrayList(java.util.ArrayList) Event(org.apache.ignite.events.Event) IgfsEvent(org.apache.ignite.events.IgfsEvent) CountDownLatch(java.util.concurrent.CountDownLatch) IgniteCheckedException(org.apache.ignite.IgniteCheckedException) IgniteException(org.apache.ignite.IgniteException)

Example 69 with Event

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());
}
Also used : IgfsEvent(org.apache.ignite.events.IgfsEvent) IgnitePredicate(org.apache.ignite.lang.IgnitePredicate) ArrayList(java.util.ArrayList) Event(org.apache.ignite.events.Event) IgfsEvent(org.apache.ignite.events.IgfsEvent) CountDownLatch(java.util.concurrent.CountDownLatch)

Example 70 with Event

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();
}
Also used : Event(org.apache.ignite.events.Event) CountDownLatch(java.util.concurrent.CountDownLatch)

Aggregations

Event (org.apache.ignite.events.Event)226 CountDownLatch (java.util.concurrent.CountDownLatch)127 Ignite (org.apache.ignite.Ignite)112 DiscoveryEvent (org.apache.ignite.events.DiscoveryEvent)96 UUID (java.util.UUID)71 IgnitePredicate (org.apache.ignite.lang.IgnitePredicate)44 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)43 ClusterNode (org.apache.ignite.cluster.ClusterNode)38 GridLocalEventListener (org.apache.ignite.internal.managers.eventstorage.GridLocalEventListener)28 ArrayList (java.util.ArrayList)27 JobEvent (org.apache.ignite.events.JobEvent)27 IgniteException (org.apache.ignite.IgniteException)20 IgniteCheckedException (org.apache.ignite.IgniteCheckedException)19 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)16 HashSet (java.util.HashSet)15 TaskEvent (org.apache.ignite.events.TaskEvent)15 Collection (java.util.Collection)13 HashMap (java.util.HashMap)12 GridMessageListener (org.apache.ignite.internal.managers.communication.GridMessageListener)12 GridConcurrentHashSet (org.apache.ignite.internal.util.GridConcurrentHashSet)12