brighter_planet_metadata 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/Rakefile +2 -0
- data/brighter_planet_metadata.gemspec +2 -4
- data/lib/brighter_planet_metadata/authoritative_dns_resolver.rb +12 -0
- data/lib/brighter_planet_metadata/{cm1_adapter.rb → cm1_authority.rb} +12 -16
- data/lib/brighter_planet_metadata/{data1_adapter.rb → data1_authority.rb} +2 -27
- data/lib/brighter_planet_metadata/metadata.rb +55 -50
- data/lib/brighter_planet_metadata/version.rb +1 -1
- data/lib/brighter_planet_metadata.rb +2 -3
- data/test/helper.rb +0 -1
- data/test/test_fallback.rb +9 -4
- data/test/test_live_cm1.rb +10 -13
- data/test/test_live_data1.rb +2 -25
- data/test/test_live_remote.rb +14 -7
- data/test/test_real.rb +11 -5
- metadata +16 -15
data/.gitignore
CHANGED
data/Rakefile
CHANGED
@@ -21,14 +21,12 @@ Gem::Specification.new do |s|
|
|
21
21
|
s.add_dependency 'eat'
|
22
22
|
s.add_dependency 'activesupport', '>=2.3.4'
|
23
23
|
s.add_dependency 'i18n' # activesupport?
|
24
|
+
s.add_dependency 'cache_method'
|
24
25
|
s.add_development_dependency 'fakeweb'
|
25
26
|
s.add_development_dependency 'test-unit'
|
26
27
|
s.add_development_dependency 'fakefs'
|
27
28
|
s.add_development_dependency 'earth'
|
28
|
-
|
29
|
-
s.add_development_dependency 'ruby-debug19'
|
30
|
-
else
|
29
|
+
unless RUBY_VERSION > '1.9'
|
31
30
|
s.add_development_dependency 'fastercsv' # earth
|
32
|
-
s.add_development_dependency 'ruby-debug'
|
33
31
|
end
|
34
32
|
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'dnsruby'
|
2
|
+
module BrighterPlanet
|
3
|
+
class Metadata
|
4
|
+
module AuthoritativeDnsResolver
|
5
|
+
def self.getaddress(domain_name)
|
6
|
+
r = ::Dnsruby::Resolver.new(:nameserver => %w{ ns1.easydns.com ns2.easydns.com ns3.easydns.org })
|
7
|
+
q = r.query domain_name, ::Dnsruby::Types.A, ::Dnsruby::Classes.IN
|
8
|
+
q.answer[0].address.to_s
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'singleton'
|
2
2
|
module BrighterPlanet
|
3
3
|
class Metadata
|
4
|
-
class
|
4
|
+
class Cm1Authority
|
5
5
|
include ::Singleton
|
6
6
|
def authority?(universe, method_id)
|
7
7
|
return unless universe == 'cm1_production'
|
@@ -13,27 +13,23 @@ module BrighterPlanet
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
def emitters
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
undifferentiated_emitters.select do |name|
|
20
|
-
begin
|
21
|
-
"::BrighterPlanet::#{name}::BETA".constantize == true
|
22
|
-
rescue ::NameError
|
23
|
-
false
|
24
|
-
end
|
16
|
+
ary = []
|
17
|
+
::ObjectSpace.each_object(::BrighterPlanet::Emitter) do |obj|
|
18
|
+
ary.push obj.name.demodulize
|
25
19
|
end
|
20
|
+
ary
|
26
21
|
end
|
27
22
|
def certified_emitters
|
28
23
|
emitters
|
29
24
|
end
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
ary.push obj.name.demodulize
|
25
|
+
def protocols
|
26
|
+
emitters.map(&:constantize).map(&:protocols).flatten.uniq.inject({}) do |memo, p|
|
27
|
+
memo[p] = ::File.read(::File.join(::Rails.root, 'app', 'views', 'protocols', 'names', "_#{p}.html.erb")).strip
|
28
|
+
memo
|
35
29
|
end
|
36
|
-
|
30
|
+
end
|
31
|
+
def color
|
32
|
+
(AuthoritativeDnsResolver.getaddress('carbon.brighterplanet.com') == '184.73.240.13') ? 'red' : 'blue'
|
37
33
|
end
|
38
34
|
end
|
39
35
|
end
|
@@ -1,41 +1,16 @@
|
|
1
1
|
require 'singleton'
|
2
2
|
module BrighterPlanet
|
3
3
|
class Metadata
|
4
|
-
class
|
4
|
+
class Data1Authority
|
5
5
|
include ::Singleton
|
6
6
|
def authority?(universe, method_id)
|
7
7
|
return unless universe == 'data1_production'
|
8
8
|
respond_to? method_id
|
9
9
|
end
|
10
10
|
def resources
|
11
|
-
undifferentiated_resources - beta_resources
|
12
|
-
end
|
13
|
-
def beta_resources
|
14
|
-
undifferentiated_resources.select do |name|
|
15
|
-
begin
|
16
|
-
"::#{name}::BETA".constantize == true
|
17
|
-
rescue ::NameError
|
18
|
-
false
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
def datasets
|
23
|
-
undifferentiated_datasets - beta_datasets
|
24
|
-
end
|
25
|
-
def beta_datasets
|
26
|
-
undifferentiated_datasets.select do |name|
|
27
|
-
begin
|
28
|
-
"::#{name}::BETA".constantize == true
|
29
|
-
rescue ::NameError
|
30
|
-
false
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
private
|
35
|
-
def undifferentiated_resources
|
36
11
|
::Dir[::File.expand_path(::File.join(::File.dirname(::Gem.required_location('earth', 'earth.rb')), 'earth', '**', '*.rb'))].select { |f| ::File.read(f) =~ /class [\:A-Za-z0-9]+ < ActiveRecord::Base/ }.map { |path| ::File.basename(path, '.rb').camelcase }.sort
|
37
12
|
end
|
38
|
-
def
|
13
|
+
def datasets
|
39
14
|
::Dir[::File.expand_path(::File.join(::Rails.root, 'app', 'models', '**', '*.rb'))].select { |f| ::File.read(f) =~ /class [\:A-Za-z0-9]+ < Dataset/ }.map { |path| ::File.basename(path, '.rb').camelcase }.sort
|
40
15
|
end
|
41
16
|
end
|
@@ -11,87 +11,83 @@ end if ::ActiveSupport::VERSION::MAJOR == 3
|
|
11
11
|
|
12
12
|
module BrighterPlanet
|
13
13
|
class Metadata
|
14
|
+
autoload :AuthoritativeDnsResolver, 'brighter_planet_metadata/authoritative_dns_resolver'
|
15
|
+
|
14
16
|
include ::Singleton
|
15
17
|
LIVE_URL = {
|
16
18
|
'datasets' => 'http://data.brighterplanet.com/datasets.json',
|
17
|
-
'beta_datasets' => 'http://data.brighterplanet.com/datasets.json',
|
18
19
|
'emitters' => 'http://carbon.brighterplanet.com/emitters.json',
|
19
|
-
'beta_emitters' => 'http://carbon.brighterplanet.com/emitters.json',
|
20
20
|
'certified_emitters' => 'http://certified.carbon.brighterplanet.com/emitters.json',
|
21
21
|
'resources' => 'http://data.brighterplanet.com/resources.json',
|
22
|
-
'
|
22
|
+
'protocols' => 'http://carbon.brighterplanet.com/protocols.json',
|
23
|
+
'color' => 'http://carbon.brighterplanet.com/color.json'
|
23
24
|
}.freeze
|
24
25
|
|
25
|
-
# sabshere 2/
|
26
|
+
# sabshere 2/4/11 obv these have to be updated with some regularity
|
26
27
|
FALLBACK = {
|
27
|
-
'datasets' => %w{ },
|
28
|
-
'
|
29
|
-
'emitters' => %w{ Automobile AutomobileTrip BusTrip Computation Diet Flight FuelPurchase Lodging Meeting Motorcycle Pet Purchase RailTrip Residence Shipment },
|
30
|
-
'beta_emitters' => %w{ },
|
28
|
+
'datasets' => %w{ AutomobileIndustry FlightIndustry },
|
29
|
+
'emitters' => %w{ Automobile AutomobileTrip BusTrip Computation Diet ElectricityUse Flight FuelPurchase Lodging Meeting Motorcycle Pet Purchase RailTrip Residence Shipment },
|
31
30
|
'certified_emitters' => %w{ },
|
32
31
|
'resources' => %w{ AirConditionerUse Aircraft AircraftClass AircraftManufacturer Airline Airport AutomobileFuelType AutomobileMake AutomobileMakeFleetYear AutomobileMakeModel AutomobileMakeModelYear AutomobileMakeModelYearVariant AutomobileMakeYear AutomobileSizeClass AutomobileSizeClassYear AutomobileTypeFuelAge AutomobileTypeFuelControl AutomobileTypeFuelYear AutomobileTypeFuelYearControl AutomobileTypeYear Breed BreedGender BusClass Carrier CarrierMode CensusDivision CensusRegion ClimateDivision ClothesMachineUse ComputationPlatform Country DataCenterCompany DietClass DishwasherUse EgridRegion EgridSubregion FlightDistanceClass FlightFuelType FlightSeatClass FlightSegment FoodGroup FuelPrice FuelType FuelYear Gender GreenhouseGas Industry IndustryProduct IndustryProductLine IndustrySector LodgingClass Merchant MerchantCategory MerchantCategoryIndustry PetroleumAdministrationForDefenseDistrict ProductLine ProductLineIndustryProduct RailClass ResidenceAppliance ResidenceClass ResidenceFuelPrice ResidenceFuelType ResidentialEnergyConsumptionSurveyResponse Sector ServerType ServerTypeAlias ShipmentMode Species State Urbanity ZipCode },
|
33
|
-
'
|
32
|
+
'protocols' => { 'ghg_protocol_scope_3' => 'Greenhouse Gas Protocol Scope 3', 'iso' => 'ISO 14064-1', 'tcr' => 'The Climate Registry', 'ghg_protocol_scope_1' => 'Greenhouse Gas Protocol Scope 1' },
|
33
|
+
'color' => 'unknown'
|
34
34
|
}.freeze
|
35
35
|
|
36
|
-
# What beta_resources are available.
|
37
|
-
def beta_resources
|
38
|
-
authoritative_list_or_fallback 'beta_resources'
|
39
|
-
end
|
40
|
-
|
41
36
|
# What resources are available.
|
42
37
|
def resources
|
43
|
-
|
38
|
+
deep_copy_of_authoritative_value_or_fallback 'resources'
|
44
39
|
end
|
45
40
|
|
46
41
|
# What certified_emitters are available.
|
47
42
|
def certified_emitters
|
48
|
-
|
49
|
-
end
|
50
|
-
|
51
|
-
# What beta_emitters are available.
|
52
|
-
def beta_emitters
|
53
|
-
authoritative_list_or_fallback 'beta_emitters'
|
43
|
+
deep_copy_of_authoritative_value_or_fallback 'certified_emitters'
|
54
44
|
end
|
55
45
|
|
56
46
|
# What emitters are available.
|
57
47
|
def emitters
|
58
|
-
|
48
|
+
deep_copy_of_authoritative_value_or_fallback 'emitters'
|
59
49
|
end
|
60
50
|
|
61
51
|
# What datasets are available.
|
62
52
|
def datasets
|
63
|
-
|
53
|
+
deep_copy_of_authoritative_value_or_fallback 'datasets'
|
64
54
|
end
|
65
|
-
|
66
|
-
# What
|
67
|
-
def
|
68
|
-
|
55
|
+
|
56
|
+
# What protocols are recognized
|
57
|
+
def protocols
|
58
|
+
deep_copy_of_authoritative_value_or_fallback 'protocols'
|
69
59
|
end
|
70
|
-
|
60
|
+
|
61
|
+
# What 'color' the emission estimate service is today.
|
62
|
+
def color
|
63
|
+
deep_copy_of_authoritative_value_or_fallback 'color'
|
64
|
+
end
|
65
|
+
|
71
66
|
# Clear out any cached values
|
72
67
|
def refresh
|
73
|
-
instance_variables.each { |ivar_name| instance_variable_set ivar_name, nil }
|
68
|
+
# instance_variables.each { |ivar_name| instance_variable_set ivar_name, nil }
|
69
|
+
clear_method_cache :authoritative_value_or_fallback
|
74
70
|
end
|
75
71
|
|
76
72
|
private
|
77
73
|
|
78
|
-
autoload :
|
79
|
-
def
|
80
|
-
|
74
|
+
autoload :Cm1Authority, 'brighter_planet_metadata/cm1_authority'
|
75
|
+
def cm1_authority
|
76
|
+
Cm1Authority.instance
|
81
77
|
end
|
82
78
|
|
83
|
-
autoload :
|
84
|
-
def
|
85
|
-
|
79
|
+
autoload :Data1Authority, 'brighter_planet_metadata/data1_authority'
|
80
|
+
def data1_authority
|
81
|
+
Data1Authority.instance
|
86
82
|
end
|
87
83
|
|
88
|
-
def
|
89
|
-
[
|
84
|
+
def authorities
|
85
|
+
[ cm1_authority, data1_authority ]
|
90
86
|
end
|
91
87
|
|
92
88
|
# A universe of operation, for example an EngineYard AppCloud "environment"
|
93
89
|
def universe
|
94
|
-
|
90
|
+
if ::ENV['BRIGHTER_PLANET_METADATA_FORCE_UNIVERSE'].present?
|
95
91
|
::ENV['BRIGHTER_PLANET_METADATA_FORCE_UNIVERSE']
|
96
92
|
elsif ::File.readable? '/etc/brighterplanet/universe'
|
97
93
|
::File.read('/etc/brighterplanet/universe').chomp
|
@@ -100,27 +96,36 @@ module BrighterPlanet
|
|
100
96
|
end
|
101
97
|
end
|
102
98
|
|
99
|
+
def deep_copy_of_authoritative_value_or_fallback(k)
|
100
|
+
v = authoritative_value_or_fallback k
|
101
|
+
case v
|
102
|
+
when ::Hash
|
103
|
+
::Hash[(v.map { |k, vv| [ k.to_s.dup, vv.to_s.dup] })]
|
104
|
+
when ::Array
|
105
|
+
v.map { |vv| vv.to_s.dup }
|
106
|
+
when ::String, ::Symbol
|
107
|
+
v.to_s.dup
|
108
|
+
else
|
109
|
+
raise "i only handle arrays of strings, hashes of strings, and strings"
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
103
113
|
# Used internally to pull a live list of emitters/datasets/etc. or fall back to a static one.
|
104
|
-
def
|
114
|
+
def authoritative_value_or_fallback(k)
|
105
115
|
k = k.to_s
|
106
|
-
|
107
|
-
|
108
|
-
return cached_v.map(&:dup) # deep copy of an array with strings
|
109
|
-
end
|
110
|
-
v = if adapter = adapters.detect { |a| a.authority? universe, k }
|
111
|
-
adapter.send k
|
116
|
+
if (authority = authorities.detect { |a| a.authority? universe, k })
|
117
|
+
authority.send k
|
112
118
|
else
|
113
119
|
begin
|
114
120
|
hsh = ::ActiveSupport::JSON.decode eat(LIVE_URL[k])
|
115
|
-
|
116
|
-
hsh
|
121
|
+
kk = (k == 'certified_emitters') ? 'emitters' : k # the certified response will contain an 'emitters' key
|
122
|
+
raise unless hsh.has_key? kk
|
123
|
+
hsh[kk]
|
117
124
|
rescue
|
118
125
|
FALLBACK[k]
|
119
126
|
end
|
120
127
|
end
|
121
|
-
raise "Unknown key #{k}" unless v.is_a? ::Array
|
122
|
-
instance_variable_set ivar_name, v
|
123
|
-
authoritative_list_or_fallback k
|
124
128
|
end
|
129
|
+
cache_method :authoritative_value_or_fallback, 60
|
125
130
|
end
|
126
131
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'cache_method'
|
2
|
+
|
1
3
|
module BrighterPlanet
|
2
4
|
autoload :Metadata, 'brighter_planet_metadata/metadata'
|
3
5
|
def self.metadata
|
@@ -8,12 +10,9 @@ end
|
|
8
10
|
# sabshere 2/2/11 in case we ever want to define these directly on BrighterPlanet
|
9
11
|
# %w{
|
10
12
|
# datasets
|
11
|
-
# beta_datasets
|
12
13
|
# emitters
|
13
|
-
# beta_emitters
|
14
14
|
# certified_emitters
|
15
15
|
# resources
|
16
|
-
# beta_resources
|
17
16
|
# }.each do |method_id|
|
18
17
|
# eval %{
|
19
18
|
# def self.#{method_id}
|
data/test/helper.rb
CHANGED
data/test/test_fallback.rb
CHANGED
@@ -10,6 +10,7 @@ class TestFallback < Test::Unit::TestCase
|
|
10
10
|
'http://carbon.brighterplanet.com/emitters.json',
|
11
11
|
'http://certified.carbon.brighterplanet.com/emitters.json',
|
12
12
|
'http://data.brighterplanet.com/resources.json',
|
13
|
+
'http://carbon.brighterplanet.com/protocols.json',
|
13
14
|
].each do |url|
|
14
15
|
FakeWeb.register_uri :get,
|
15
16
|
url,
|
@@ -18,10 +19,6 @@ class TestFallback < Test::Unit::TestCase
|
|
18
19
|
end
|
19
20
|
end
|
20
21
|
|
21
|
-
def test_beta_datasets
|
22
|
-
assert ::BrighterPlanet.metadata.beta_datasets.include? 'AutomobileIndustry'
|
23
|
-
end
|
24
|
-
|
25
22
|
def test_emitters
|
26
23
|
assert ::BrighterPlanet.metadata.emitters.include? 'AutomobileTrip'
|
27
24
|
end
|
@@ -29,4 +26,12 @@ class TestFallback < Test::Unit::TestCase
|
|
29
26
|
def test_resources
|
30
27
|
assert ::BrighterPlanet.metadata.resources.include? 'AutomobileMake'
|
31
28
|
end
|
29
|
+
|
30
|
+
def test_datasets
|
31
|
+
assert ::BrighterPlanet.metadata.datasets.include? 'AutomobileIndustry'
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_protocols
|
35
|
+
assert ::BrighterPlanet.metadata.protocols.values.include? 'The Climate Registry'
|
36
|
+
end
|
32
37
|
end
|
data/test/test_live_cm1.rb
CHANGED
@@ -6,10 +6,6 @@ module BrighterPlanet
|
|
6
6
|
module LiveCm1Emitter
|
7
7
|
extend BrighterPlanet::Emitter
|
8
8
|
end
|
9
|
-
module LiveCm1BetaEmitter
|
10
|
-
extend BrighterPlanet::Emitter
|
11
|
-
BETA = true
|
12
|
-
end
|
13
9
|
end
|
14
10
|
|
15
11
|
class TestLiveCm1 < Test::Unit::TestCase
|
@@ -25,14 +21,14 @@ class TestLiveCm1 < Test::Unit::TestCase
|
|
25
21
|
end
|
26
22
|
|
27
23
|
def test_authority
|
28
|
-
assert ::BrighterPlanet::Metadata::
|
24
|
+
assert ::BrighterPlanet::Metadata::Cm1Authority.instance.authority?('cm1_production', 'emitters')
|
29
25
|
|
30
26
|
# you don't have authority to say what's certified...
|
31
|
-
assert !::BrighterPlanet::Metadata::
|
27
|
+
assert !::BrighterPlanet::Metadata::Cm1Authority.instance.authority?('cm1_production', 'certified_emitters')
|
32
28
|
|
33
29
|
# now you do
|
34
30
|
Rails.application.certified = true
|
35
|
-
assert ::BrighterPlanet::Metadata::
|
31
|
+
assert ::BrighterPlanet::Metadata::Cm1Authority.instance.authority?('cm1_production', 'certified_emitters')
|
36
32
|
ensure
|
37
33
|
Rails.application.certified = false
|
38
34
|
end
|
@@ -41,16 +37,17 @@ class TestLiveCm1 < Test::Unit::TestCase
|
|
41
37
|
assert_equal %w{LiveCm1Emitter}, ::BrighterPlanet.metadata.emitters
|
42
38
|
end
|
43
39
|
|
44
|
-
def
|
45
|
-
assert_equal
|
40
|
+
def test_what_must_come_from_other_sources
|
41
|
+
assert_equal ::BrighterPlanet::Metadata::FALLBACK['resources'], ::BrighterPlanet.metadata.resources
|
46
42
|
end
|
47
43
|
|
48
|
-
|
44
|
+
# note: you still get a list of certified emitters! the point is that you, as the edge server, don't decide which ones they are
|
45
|
+
# in other words, nothing is ever certified unless Rails.application.certified?
|
46
|
+
def test_certified_emitters_as_if_on_edge
|
49
47
|
assert_equal ::BrighterPlanet::Metadata::FALLBACK['certified_emitters'], ::BrighterPlanet.metadata.certified_emitters
|
50
|
-
assert_equal ::BrighterPlanet::Metadata::FALLBACK['resources'], ::BrighterPlanet.metadata.resources
|
51
48
|
end
|
52
|
-
|
53
|
-
def
|
49
|
+
|
50
|
+
def test_certified_emitters_as_if_on_certified
|
54
51
|
Rails.application.certified = true
|
55
52
|
assert_equal %w{LiveCm1Emitter}, ::BrighterPlanet.metadata.certified_emitters
|
56
53
|
ensure
|
data/test/test_live_data1.rb
CHANGED
@@ -19,11 +19,6 @@ class TestLiveData1 < Test::Unit::TestCase
|
|
19
19
|
File.open(fake_resource_path, 'w') { |f| f.write "class ::LiveData1Resource < ActiveRecord::Base; end"}
|
20
20
|
eval File.read(fake_resource_path) unless defined?(::LiveData1Resource)
|
21
21
|
|
22
|
-
# fake what looks like a beta resource
|
23
|
-
fake_beta_resource_path = File.join earth_gem_path, 'lib', 'earth', 'live_data1_beta_resource.rb'
|
24
|
-
File.open(fake_beta_resource_path, 'w') { |f| f.write "class ::LiveData1BetaResource < ActiveRecord::Base; BETA = true; end"}
|
25
|
-
eval File.read(fake_beta_resource_path) unless defined?(::LiveData1BetaResource)
|
26
|
-
|
27
22
|
# FAKING DATASETS
|
28
23
|
::Rails.root = '/data/data1/current'
|
29
24
|
eval "class ::Dataset; end"
|
@@ -32,12 +27,7 @@ class TestLiveData1 < Test::Unit::TestCase
|
|
32
27
|
fake_dataset_path = File.join ::Rails.root, 'app', 'models', 'live_data1_dataset.rb'
|
33
28
|
File.open(fake_dataset_path, 'w') { |f| f.write "class ::LiveData1Dataset < Dataset; end"}
|
34
29
|
eval File.read(fake_dataset_path) unless defined?(::LiveData1Dataset)
|
35
|
-
|
36
|
-
# fake what looks like a beta dataset
|
37
|
-
fake_beta_dataset_path = File.join ::Rails.root, 'app', 'models', 'live_data1_beta_dataset.rb'
|
38
|
-
File.open(fake_beta_dataset_path, 'w') { |f| f.write "class ::LiveData1BetaDataset < Dataset; BETA = true; end"}
|
39
|
-
eval File.read(fake_beta_dataset_path) unless defined?(::LiveData1BetaDataset)
|
40
|
-
|
30
|
+
|
41
31
|
# FAKING A UNIVERSE
|
42
32
|
FileUtils.mkdir_p '/etc/brighterplanet'
|
43
33
|
File.open('/etc/brighterplanet/universe', 'w') { |f| f.write 'data1_production' }
|
@@ -48,30 +38,17 @@ class TestLiveData1 < Test::Unit::TestCase
|
|
48
38
|
end
|
49
39
|
|
50
40
|
def test_authority
|
51
|
-
assert ::BrighterPlanet.metadata.send(:
|
52
|
-
assert ::BrighterPlanet.metadata.send(:data1_adapter).authority?('data1_production', 'beta_resources')
|
53
|
-
end
|
54
|
-
|
55
|
-
def test_undifferentiated_resources
|
56
|
-
assert_equal %w{LiveData1BetaResource LiveData1Resource}, ::BrighterPlanet.metadata.send(:data1_adapter).send(:undifferentiated_resources)
|
41
|
+
assert ::BrighterPlanet.metadata.send(:data1_authority).authority?('data1_production', 'resources')
|
57
42
|
end
|
58
43
|
|
59
44
|
def test_resources
|
60
45
|
assert_equal %w{LiveData1Resource}, ::BrighterPlanet.metadata.resources
|
61
46
|
end
|
62
|
-
|
63
|
-
def test_beta_resources
|
64
|
-
assert_equal %w{LiveData1BetaResource}, ::BrighterPlanet.metadata.beta_resources
|
65
|
-
end
|
66
47
|
|
67
48
|
def test_datasets
|
68
49
|
assert_equal %w{LiveData1Dataset}, ::BrighterPlanet.metadata.datasets
|
69
50
|
end
|
70
51
|
|
71
|
-
def test_beta_datasets
|
72
|
-
assert_equal %w{LiveData1BetaDataset}, ::BrighterPlanet.metadata.beta_datasets
|
73
|
-
end
|
74
|
-
|
75
52
|
def test_what_must_come_from_other_sources
|
76
53
|
assert_equal ::BrighterPlanet::Metadata::FALLBACK['emitters'], ::BrighterPlanet.metadata.emitters
|
77
54
|
end
|
data/test/test_live_remote.rb
CHANGED
@@ -9,10 +9,12 @@ class TestLiveRemote < Test::Unit::TestCase
|
|
9
9
|
FakeWeb.clean_registry
|
10
10
|
FakeWeb.allow_net_connect = false
|
11
11
|
{
|
12
|
-
'http://data.brighterplanet.com/datasets.json' => { 'datasets' => %w{ LiveRemoteDataset }
|
13
|
-
'http://carbon.brighterplanet.com/emitters.json' => { 'emitters' => %w{ LiveRemoteEmitter }
|
14
|
-
'http://certified.carbon.brighterplanet.com/emitters.json' => { 'emitters' => %w{ LiveRemoteCertifiedEmitter }
|
15
|
-
'http://data.brighterplanet.com/resources.json' => { 'resources' => %w{ LiveRemoteResource }
|
12
|
+
'http://data.brighterplanet.com/datasets.json' => { 'datasets' => %w{ LiveRemoteDataset } },
|
13
|
+
'http://carbon.brighterplanet.com/emitters.json' => { 'emitters' => %w{ LiveRemoteEmitter } },
|
14
|
+
'http://certified.carbon.brighterplanet.com/emitters.json' => { 'emitters' => %w{ LiveRemoteCertifiedEmitter } },
|
15
|
+
'http://data.brighterplanet.com/resources.json' => { 'resources' => %w{ LiveRemoteResource } },
|
16
|
+
'http://carbon.brighterplanet.com/protocols.json' => { 'protocols' => { 'fooprotocol' => 'Foo Protocol' } },
|
17
|
+
'http://carbon.brighterplanet.com/color.json' => { 'color' => 'magenta'}
|
16
18
|
}.each do |url, hsh|
|
17
19
|
FakeWeb.register_uri :get,
|
18
20
|
url,
|
@@ -34,12 +36,9 @@ class TestLiveRemote < Test::Unit::TestCase
|
|
34
36
|
|
35
37
|
%w{
|
36
38
|
datasets
|
37
|
-
beta_datasets
|
38
39
|
emitters
|
39
|
-
beta_emitters
|
40
40
|
certified_emitters
|
41
41
|
resources
|
42
|
-
beta_resources
|
43
42
|
}.each do |kind|
|
44
43
|
eval %{
|
45
44
|
def test_#{kind}
|
@@ -47,4 +46,12 @@ class TestLiveRemote < Test::Unit::TestCase
|
|
47
46
|
end
|
48
47
|
}
|
49
48
|
end
|
49
|
+
|
50
|
+
def test_protocols
|
51
|
+
assert ::BrighterPlanet.metadata.protocols.values.include?('Foo Protocol')
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_color
|
55
|
+
assert_equal 'magenta', ::BrighterPlanet.metadata.color
|
56
|
+
end
|
50
57
|
end
|
data/test/test_real.rb
CHANGED
@@ -7,14 +7,12 @@ class TestReal < Test::Unit::TestCase
|
|
7
7
|
FakeWeb.clean_registry
|
8
8
|
FakeWeb.allow_net_connect = true
|
9
9
|
$old_fallback = BrighterPlanet::Metadata::FALLBACK
|
10
|
-
|
11
|
-
BrighterPlanet::Metadata.const_set 'FALLBACK', Hash.new([])
|
10
|
+
silence_warnings { BrighterPlanet::Metadata.const_set 'FALLBACK', Hash.new([]) }
|
12
11
|
end
|
13
12
|
|
14
13
|
def teardown
|
15
14
|
super
|
16
|
-
|
17
|
-
BrighterPlanet::Metadata.const_set 'FALLBACK', $old_fallback
|
15
|
+
silence_warnings { BrighterPlanet::Metadata.const_set 'FALLBACK', $old_fallback }
|
18
16
|
end
|
19
17
|
|
20
18
|
def test_emitters
|
@@ -26,6 +24,14 @@ class TestReal < Test::Unit::TestCase
|
|
26
24
|
end
|
27
25
|
|
28
26
|
def test_datasets
|
29
|
-
assert ::BrighterPlanet.metadata.
|
27
|
+
assert ::BrighterPlanet.metadata.datasets.include?('AutomobileIndustry')
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_protocols
|
31
|
+
assert ::BrighterPlanet.metadata.protocols.values.include?('The Climate Registry')
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_color
|
35
|
+
assert %w{ red blue }.include?(::BrighterPlanet.metadata.color)
|
30
36
|
end
|
31
37
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: brighter_planet_metadata
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 27
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Seamus Abshere
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-03-25 00:00:00 -05:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -63,7 +63,7 @@ dependencies:
|
|
63
63
|
type: :runtime
|
64
64
|
version_requirements: *id003
|
65
65
|
- !ruby/object:Gem::Dependency
|
66
|
-
name:
|
66
|
+
name: cache_method
|
67
67
|
prerelease: false
|
68
68
|
requirement: &id004 !ruby/object:Gem::Requirement
|
69
69
|
none: false
|
@@ -74,10 +74,10 @@ dependencies:
|
|
74
74
|
segments:
|
75
75
|
- 0
|
76
76
|
version: "0"
|
77
|
-
type: :
|
77
|
+
type: :runtime
|
78
78
|
version_requirements: *id004
|
79
79
|
- !ruby/object:Gem::Dependency
|
80
|
-
name:
|
80
|
+
name: fakeweb
|
81
81
|
prerelease: false
|
82
82
|
requirement: &id005 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
@@ -91,7 +91,7 @@ dependencies:
|
|
91
91
|
type: :development
|
92
92
|
version_requirements: *id005
|
93
93
|
- !ruby/object:Gem::Dependency
|
94
|
-
name:
|
94
|
+
name: test-unit
|
95
95
|
prerelease: false
|
96
96
|
requirement: &id006 !ruby/object:Gem::Requirement
|
97
97
|
none: false
|
@@ -105,7 +105,7 @@ dependencies:
|
|
105
105
|
type: :development
|
106
106
|
version_requirements: *id006
|
107
107
|
- !ruby/object:Gem::Dependency
|
108
|
-
name:
|
108
|
+
name: fakefs
|
109
109
|
prerelease: false
|
110
110
|
requirement: &id007 !ruby/object:Gem::Requirement
|
111
111
|
none: false
|
@@ -119,7 +119,7 @@ dependencies:
|
|
119
119
|
type: :development
|
120
120
|
version_requirements: *id007
|
121
121
|
- !ruby/object:Gem::Dependency
|
122
|
-
name:
|
122
|
+
name: earth
|
123
123
|
prerelease: false
|
124
124
|
requirement: &id008 !ruby/object:Gem::Requirement
|
125
125
|
none: false
|
@@ -133,7 +133,7 @@ dependencies:
|
|
133
133
|
type: :development
|
134
134
|
version_requirements: *id008
|
135
135
|
- !ruby/object:Gem::Dependency
|
136
|
-
name:
|
136
|
+
name: fastercsv
|
137
137
|
prerelease: false
|
138
138
|
requirement: &id009 !ruby/object:Gem::Requirement
|
139
139
|
none: false
|
@@ -162,8 +162,9 @@ files:
|
|
162
162
|
- bin/brighter_planet_metadata
|
163
163
|
- brighter_planet_metadata.gemspec
|
164
164
|
- lib/brighter_planet_metadata.rb
|
165
|
-
- lib/brighter_planet_metadata/
|
166
|
-
- lib/brighter_planet_metadata/
|
165
|
+
- lib/brighter_planet_metadata/authoritative_dns_resolver.rb
|
166
|
+
- lib/brighter_planet_metadata/cm1_authority.rb
|
167
|
+
- lib/brighter_planet_metadata/data1_authority.rb
|
167
168
|
- lib/brighter_planet_metadata/metadata.rb
|
168
169
|
- lib/brighter_planet_metadata/version.rb
|
169
170
|
- test/helper.rb
|
@@ -204,7 +205,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
204
205
|
requirements: []
|
205
206
|
|
206
207
|
rubyforge_project: brighter_planet_metadata
|
207
|
-
rubygems_version: 1.
|
208
|
+
rubygems_version: 1.6.2
|
208
209
|
signing_key:
|
209
210
|
specification_version: 3
|
210
211
|
summary: Names of Brighter Planet things
|