/*
* Copyright 2010 salaboy.
*
* 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.
* under the License.
*/
package org.drools.io.mina;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.drools.SystemEventListener;
import org.drools.SystemEventListenerFactory;
import org.drools.grid.CoreServicesLookup;
import org.drools.grid.GridServiceDescription;
import org.drools.grid.SocketService;
import org.drools.grid.conf.GridPeerServiceConfiguration;
import org.drools.grid.conf.impl.GridPeerConfiguration;
import org.drools.grid.impl.GridImpl;
import org.drools.grid.impl.MultiplexSocketServerImpl;
import org.drools.grid.io.Connector;
import org.drools.grid.io.ConversationManager;
import org.drools.grid.io.impl.ConversationManagerImpl;
import org.drools.grid.io.impl.MultiplexSocketServiceCongifuration;
import org.drools.grid.remote.mina.MinaAcceptorFactoryService;
import org.drools.grid.remote.mina.MinaConnector;
import org.drools.grid.service.directory.WhitePages;
import org.drools.grid.service.directory.impl.CoreServicesLookupConfiguration;
import org.drools.grid.service.directory.impl.WhitePagesClient;
import org.drools.grid.service.directory.impl.WhitePagesLocalConfiguration;
import org.drools.grid.service.directory.impl.WhitePagesSocketConfiguration;
import org.drools.grid.time.impl.MockJob;
import org.drools.grid.timer.impl.CoreServicesSchedulerConfiguration;
import org.drools.grid.timer.impl.RegisterSchedulerConfiguration;
import org.drools.grid.timer.impl.SchedulerClient;
import org.drools.grid.timer.impl.SchedulerLocalConfiguration;
import org.drools.grid.timer.impl.SchedulerSocketConfiguration;
import org.drools.grid.util.IoUtils;
import org.drools.time.SchedulerService;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
/**
*
* @author salaboy
*/
public class RegisterServicesTest {
private SystemEventListener l = SystemEventListenerFactory.getSystemEventListener();
private Map<String, GridServiceDescription> coreServicesMap;
public RegisterServicesTest() {
}
@BeforeClass
public static void setUpClass() throws Exception {
}
@AfterClass
public static void tearDownClass() throws Exception {
}
@Before
public void setUp() {
}
@After
public void tearDown() {
}
@Test
public void test1() {
}
// @Test
// public void testRegisterInCoreServices() {
//
// coreServicesMap = new HashMap<String, GridServiceDescription>();//Hazelcast.newHazelcastInstance( null ).getMap( CoreServicesLookup.class.getName() );
//
// GridImpl grid = new GridImpl( new HashMap<String, Object>() );
//
// //Local Grid Configuration, for our client
// GridPeerConfiguration conf = new GridPeerConfiguration();
//
// //Configuring the Core Services White Pages
// GridPeerServiceConfiguration coreSeviceWPConf = new CoreServicesLookupConfiguration( coreServicesMap );
// conf.addConfiguration( coreSeviceWPConf );
//
// //Configuring the Core Services Scheduler
// GridPeerServiceConfiguration coreSeviceSchedulerConf = new CoreServicesSchedulerConfiguration();
// conf.addConfiguration( coreSeviceSchedulerConf );
//
// //Configuring the SocketService
// MultiplexSocketServiceCongifuration socketConf = new MultiplexSocketServiceCongifuration( new MultiplexSocketServerImpl( "127.0.0.1",
// new MinaAcceptorFactoryService(),
// l,
// grid ) );
//
// //Configuring the WhitePages
// WhitePagesLocalConfiguration wplConf = new WhitePagesLocalConfiguration();
// conf.addConfiguration( wplConf );
//
// socketConf.addService( WhitePages.class.getName(), wplConf.getWhitePages(), 8000 );
//
//
// conf.addConfiguration( socketConf );
//
// //Create a Local Scheduler
// GridPeerServiceConfiguration schlConf = new SchedulerLocalConfiguration( "myLocalSched" );
// conf.addConfiguration( schlConf );
//
// //Expose it to the Grid so it can be accesed by different nodes
// // I need to use the same port to reuse the service multiplexer
// GridPeerServiceConfiguration schlsc = new SchedulerSocketConfiguration( 5012 );
// conf.addConfiguration( schlsc );
//
// GridPeerServiceConfiguration registerschedincore = new RegisterSchedulerConfiguration();
// conf.addConfiguration( registerschedincore );
//
// conf.configure( grid );
//
// //Local White Pages
// WhitePages wp = grid.get( WhitePages.class );
//
// //Local sched in Local WP
// GridServiceDescription gsdLocalSched = wp.lookup( "scheduler:" + "myLocalSched" + SchedulerService.class.getName() );
//
// //Get the CoreWhitePages
// CoreServicesLookup corewp = grid.get( CoreServicesLookup.class );
// //Get the registered Scheduler
// GridServiceDescription gsdLocalButExposedSched = corewp.lookup( SchedulerService.class );
// //Get the registered white pages
// GridServiceDescription gsdLocalButExposedWp = corewp.lookup( WhitePages.class );
//
// //The Scheduler is local = no addresses and no Data
// Assert.assertEquals( 0,
// gsdLocalSched.getAddresses().size() );
// Assert.assertNull( gsdLocalSched.getData() );
//
// Assert.assertNotNull( gsdLocalButExposedSched.getData() );
//
// Connector conn = new MinaConnector();
//
// ConversationManager cm = new ConversationManagerImpl( "s1",
// conn,
// l );
//
// SchedulerClient sched = null;
//
// GridServiceDescription clientSched1 = wp.lookup( "scheduler:" + "myLocalSched" + SchedulerService.class.getName() );
// sched = new SchedulerClient( grid,
// clientSched1,
// cm );
// sched.scheduleJob( new MockJob(),
// new MockJobContext( "xxx" ),
// new MockTrigger( new Date( 1000 ) ) );
//
// sched = new SchedulerClient( grid,
// gsdLocalButExposedSched,
// cm );
// sched.scheduleJob( new MockJob(),
// new MockJobContext( "xxx" ),
// new MockTrigger( new Date( 1000 ) ) );
//
// //GridServiceDescription clientSched2 = new WhitePagesClient( gsdLocalButExposedWp, cm).lookup(SchedulerService.class.getName());
//
// conn.close();
//
// grid.get( SocketService.class ).close();
//
// }
}