2014-09-02 7 views
0

Я писал какой-то модульный тест, чтобы покрыть некоторые загрузки и чтения файлов из GCS (Google Cloud Storage).Тестирование модулей с облачным хранилищем

Но, видимо, эти файлы не хранятся локально, но загружены, как я получаю следующее сообщение об ошибке:

<?xml version='1.0' encoding='UTF-8'?><Error><Code>AuthenticationRequired</Code><Message>Authentication required.</Message></Error> 

at com.google.appengine.tools.cloudstorage.RetryHelper.doRetry(RetryHelper.java:120) 
at com.google.appengine.tools.cloudstorage.RetryHelper.runWithRetries(RetryHelper.java:166) 
at com.google.appengine.tools.cloudstorage.RetryHelper.runWithRetries(RetryHelper.java:156) 
at com.google.appengine.tools.cloudstorage.GcsServiceImpl.createOrReplace(GcsServiceImpl.java:70) 

Тест блок выглядит примерно так:

private final LocalServiceTestHelper helper = new LocalServiceTestHelper(
     new LocalDatastoreServiceTestConfig().setDefaultHighRepJobPolicyUnappliedJobPercentage(1).setNoStorage(true), 
     new LocalCapabilitiesServiceTestConfig(), 
     new LocalBlobstoreServiceTestConfig(), 
     new LocalImagesServiceTestConfig() 
    ); 

    @Before 
    public void setUp() { 

     helper.setUp(); 
    } 

    @After 
    public void tearDown() { 

     helper.tearDown(); 
    } 

    @Test 
    public void someTest() { ... } 

Что такое правильный способ локальный запуск GCS в модульных тестах?

ответ

0

Какую версию клиента GCS вы используете? Являются ли тесты GCS для вас (например, https://code.google.com/p/appengine-gcs-client/source/browse/trunk/java/src/test/java/com/google/appengine/tools/cloudstorage/GcsServiceTest.java), так как они также зависят от локального хранилища и последнего проверенного рабочего качества.

+0

Не пробовали эти тесты, но выяснили, что если я запускаю тест с maven, они работают. Если я запускаю их в Idea, они терпят неудачу с данной ошибкой. – Drejc

-1

Мне удалось получить модульные тесты Python для работы, хотя в настоящее время он не работает на Master, мне пришлось использовать commit 8f196d4. Лучший пример с использованием локальной заглушки находится в cloudstorage_test в хранилище, соответствующая часть ниже:

https://github.com/GoogleCloudPlatform/appengine-gcs-client/blob/master/python/test/cloudstorage_test.py

Смотрите следующий GitHub вопрос об уходе проблематичной фиксации:

https://github.com/GoogleCloudPlatform/appengine-gcs-client/issues/21

class CloudStorageTest(unittest.TestCase): 
    """Test for cloudstorage.""" 

    def setUp(self): 
    self.testbed = testbed.Testbed() 
    self.testbed.activate() 
    self.testbed.init_app_identity_stub() 
    self.testbed.init_blobstore_stub() 
    self.testbed.init_datastore_v3_stub() 
    self.testbed.init_memcache_stub() 
    self.testbed.init_urlfetch_stub() 
    cloudstorage.set_default_retry_params(None) 

    def tearDown(self): 
    self.testbed.deactivate() 

    def testReadEntireFile(self): 
    f = cloudstorage.open(TESTFILE, 'w') 
    f.write('abcde') 
    f.close() 

    f = cloudstorage.open(TESTFILE, read_buffer_size=1) 
    self.assertEqual('abcde', f.read()) 
    f.close() 

    f = cloudstorage.open(TESTFILE) 
    self.assertEqual('abcde', f.read(8)) 
    f.close() 
+0

Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. - [Из обзора] (/ review/low-quality-posts/13894456) – Jimbou

+0

Спасибо за предложение! Я отредактирую свой ответ. –

Смежные вопросы