Add DataReader for parallel training with one DB session
[platform/upstream/caffeonacl.git] / src / caffe / test / test_layer_factory.cpp
1 #include <map>
2 #include <string>
3
4 #include "boost/scoped_ptr.hpp"
5 #include "gtest/gtest.h"
6
7 #include "caffe/common.hpp"
8 #include "caffe/layer.hpp"
9 #include "caffe/layer_factory.hpp"
10 #include "caffe/util/db.hpp"
11 #include "caffe/util/io.hpp"
12
13 #include "caffe/test/test_caffe_main.hpp"
14
15 namespace caffe {
16
17 template <typename TypeParam>
18 class LayerFactoryTest : public MultiDeviceTest<TypeParam> {};
19
20 TYPED_TEST_CASE(LayerFactoryTest, TestDtypesAndDevices);
21
22 TYPED_TEST(LayerFactoryTest, TestCreateLayer) {
23   typedef typename TypeParam::Dtype Dtype;
24   typename LayerRegistry<Dtype>::CreatorRegistry& registry =
25       LayerRegistry<Dtype>::Registry();
26   shared_ptr<Layer<Dtype> > layer;
27   for (typename LayerRegistry<Dtype>::CreatorRegistry::iterator iter =
28        registry.begin(); iter != registry.end(); ++iter) {
29     // Special case: PythonLayer is checked by pytest
30     if (iter->first == "Python") { continue; }
31     LayerParameter layer_param;
32     // Data layers expect a DB
33     if (iter->first == "Data") {
34       string tmp;
35       MakeTempDir(&tmp);
36       boost::scoped_ptr<db::DB> db(db::GetDB(DataParameter_DB_LEVELDB));
37       db->Open(tmp, db::NEW);
38       db->Close();
39       layer_param.mutable_data_param()->set_source(tmp);
40     }
41     layer_param.set_type(iter->first);
42     layer = LayerRegistry<Dtype>::CreateLayer(layer_param);
43     EXPECT_EQ(iter->first, layer->type());
44   }
45 }
46
47 }  // namespace caffe