2015-05-22 2 views
1

Я хотел настроить среду munodb junit с flapdoodle, и я получил java.io.IOException, когда он пытается загрузить архив mongodb.junit test cases using embed mongodb de.flapdoodle.embed.mongo

Я использую:

  • весна-данных MongoDB: 1.6.1.RELEASE
  • de.flapdoodle.embed.mongo 1.47.3
  • org.springframework: 4.0.3.RELEASE

Я получаю следующее сообщение об ошибке:

de.flapdoodle.embed.process.exceptions.DistributionException: java.io.IOException: Could not open inputStream for http://downloads.mongodb.org/win32/mongodb-win32-i386-3.0.2.zip 

Вызванный: java.net.UnknownHostException: downloads.mongodb.org в java.net.AbstractPlainSocketImpl.connect (AbstractPlainSocketImpl.java:178)

, а также его указательного к MongoDB-win32-i386-3.0.2. zip, но я использую Windows 64 бит.

вот мой код

package com.bosch.test; 

import junit.framework.TestCase; 

import org.junit.AfterClass; 
import org.junit.Assert; 
import org.junit.BeforeClass; 
import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.springframework.data.mongodb.core.MongoTemplate; 
import org.springframework.test.context.ContextConfiguration; 
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 
import org.springframework.test.context.support.AnnotationConfigContextLoader; 

import com.bosch.in.model.Device; 
import com.bosch.in.service.imp.DeviceServiceImp; 
import com.mongodb.DB; 
import com.mongodb.DBCollection; 
import com.mongodb.Mongo; 
import com.mongodb.MongoClient; 

import de.flapdoodle.embed.mongo.MongodExecutable; 
import de.flapdoodle.embed.mongo.MongodProcess; 
import de.flapdoodle.embed.mongo.MongodStarter; 
import de.flapdoodle.embed.mongo.config.MongodConfigBuilder; 
import de.flapdoodle.embed.mongo.config.Net; 
import de.flapdoodle.embed.mongo.distribution.Version; 
import de.flapdoodle.embed.process.runtime.Network; 

@ContextConfiguration(classes=ApplicationConfig.class,loader=AnnotationConfigContextLoader.class) 
@RunWith(SpringJUnit4ClassRunner.class) 
public class DeviceServiceTest2 { 

    private static final MongodStarter starter = MongodStarter 
      .getDefaultInstance(); 

    private static MongodExecutable mongodExe; 
    private static MongodProcess mongod; 

    private static MongoClient mongo; 


    private DeviceServiceImp deviceServiceImp; 

    private MongoTemplate template; 

    @BeforeClass 
    public static void setUp() throws Exception { 
     //System.out.println("1"); 
     mongodExe = starter.prepare(new MongodConfigBuilder() 
       .version(Version.Main.V3_0) 
       .net(new Net(12345, Network.localhostIsIPv6())).build()); 
     System.out.println("2"); 
     mongod = mongodExe.start(); 
     System.out.println("3"); 

     System.out.println("4"); 
     mongo = new MongoClient("12345", 12345); 
     System.out.println("5"); 

    } 

    @AfterClass 
    public static void tearDown() throws Exception { 
     mongod.stop(); 
     mongodExe.stop(); 
    } 

    public Mongo getMongo() { 
     return mongo; 
    } 

@Test 
public void save(){ 

    System.out.println("1"); 

} 

} 

ответ

1

Я думаю, что проблема в том, что вы используете MongodStarter по умолчанию, которое не знает о конфигурации прокси (это был мой случай). Вам просто нужно настроить mongodStarter.

Вместо использования

private static final MongodStarter starter = MongodStarter 
     .getDefaultInstance(); 

вы должны иметь Somthing как это в нАлАдкА()

Command command = Command.MongoD; 

IRuntimeConfig runtimeConfig = new RuntimeConfigBuilder() 
     .defaults(command) 
     .artifactStore(new ArtifactStoreBuilder() 
       .defaults(command) 
       .download(new DownloadConfigBuilder() 
         .defaultsForCommand(command) 
         .proxyFactory(new HttpProxyFactory("proxy_host", 8080)))) 
     .build(); 

MongodStarter starter = MongodStarter.getInstance(runtimeConfig); 

Эта конфигурация хорошо объясняется на flapdoodle doc.

+0

Спасибо большое :) его сработало .. – lokesh