Package org.rioproject.eventcollector.service

Source Code of org.rioproject.eventcollector.service.ITEventCollectorAdminTest

/*
* Copyright to the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.rioproject.eventcollector.service;

import org.junit.*;
import org.rioproject.cybernode.StaticCybernode;
import org.rioproject.event.RemoteServiceEvent;
import org.rioproject.eventcollector.api.EventCollectorAdmin;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
* Tests getting and using the {@code EventCollectorAdmin}
* @author Dennis Reedy
*/
public class ITEventCollectorAdminTest {
    static StaticCybernode cybernode;
    EventCollectorImpl eventCollector;

    @BeforeClass
    public static void createCybernode() {
        cybernode = new StaticCybernode();
    }

    @Before
    public void createEventCollector() throws Exception {
        Map<String, Object> map = cybernode.activate(new File("src/test/opstring/EventCollector.groovy"));
        eventCollector = (EventCollectorImpl) map.get("Bones");
    }

    @After
    public void stopEventCollector() {
        cybernode.deactivate(eventCollector);
    }
    @Test
    public void testGettingTheAdminProxy() {
        EventCollectorAdmin admin = (EventCollectorAdmin) eventCollector.getAdmin();
        Assert.assertNotNull(admin);
    }

    @Test
    public void testUsingTheAdminProxy() throws IOException, InterruptedException {
        EventCollectorAdmin admin = (EventCollectorAdmin) eventCollector.getAdmin();
        Assert.assertNotNull(admin);
        PersistentEventManager eventManager = (PersistentEventManager)eventCollector.getEventManager();
        eventManager.addRemoteEvents(TransientEventManagerTest.createRemoteServiceEvents(10));
        /* Writing events to disk is an async operation, sleep for a bit before asserting */
        waitForFileCount(10, eventManager.getPersistentEventDirectory());
        Assert.assertEquals("Expected 10 events, got "+eventManager.getNumberOfCollectedEvents(),
                            10, eventManager.getNumberOfCollectedEvents());

        Collection<RemoteServiceEvent> events = eventManager.getEvents();
        int deleted = admin.delete(events);
        Assert.assertEquals("Expected 10, got "+deleted, 10, deleted);
        Assert.assertEquals("Expected 0 events, got "+eventManager.getNumberOfCollectedEvents(),
                            0, eventManager.getNumberOfCollectedEvents());
        File directory = eventManager.getPersistentEventDirectory();
        Assert.assertEquals("Expected 0 event files, got " + directory.list().length,
                            0, directory.list().length);
    }

    @Test
    public void testOnlyDeleteSome() throws IOException, InterruptedException {
        EventCollectorAdmin admin = (EventCollectorAdmin) eventCollector.getAdmin();
        Assert.assertNotNull(admin);
        PersistentEventManager eventManager = (PersistentEventManager)eventCollector.getEventManager();
        eventManager.addRemoteEvents(TransientEventManagerTest.createRemoteServiceEvents(10));
        waitForFileCount(10, eventManager.getPersistentEventDirectory());
        Assert.assertEquals("Expected 10 events, got "+eventManager.getNumberOfCollectedEvents(),
                            10, eventManager.getNumberOfCollectedEvents());
        List<RemoteServiceEvent> eventsToDelete = new ArrayList<RemoteServiceEvent>();
        eventsToDelete.addAll(eventManager.getEvents());
        for(int i=0; i<3; i++)
            eventsToDelete.remove(0);
        int deleted = admin.delete(eventsToDelete);
        Assert.assertEquals("Expected 7, got "+deleted, 7, deleted);
        Assert.assertEquals("Expected 3 events, got "+eventManager.getNumberOfCollectedEvents(),
                            3, eventManager.getNumberOfCollectedEvents());
        File directory = eventManager.getPersistentEventDirectory();
        Assert.assertEquals("Expected 3 event files, got "+directory.list().length,
                            3, directory.list().length);
        /* Now delete the rest */
        eventsToDelete.clear();
        eventsToDelete.addAll(eventManager.getEvents());
        deleted = admin.delete(eventsToDelete);
        Assert.assertEquals("Expected 3, got "+deleted, 3, deleted);
        Assert.assertEquals("Expected 0 events, got "+eventManager.getNumberOfCollectedEvents(),
                            0, eventManager.getNumberOfCollectedEvents());
        Assert.assertEquals("Expected 0 event files, got "+directory.list().length,
                            0, directory.list().length);
    }

    private void waitForFileCount(int count, File directory) throws InterruptedException {
        long waited = 0;
        while(waited<5) {
            if(directory.list().length<count) {
                Thread.sleep(1000);
                waited++;
            } else {
                break;
            }
        }
    }
}
TOP

Related Classes of org.rioproject.eventcollector.service.ITEventCollectorAdminTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.