~nchohan/appscale/zk3.3.4

« back to all changes in this revision

Viewing changes to AppController/coverage/lib-repo_rb.html

  • Committer: Chris Bunch
  • Date: 2012-03-09 23:38:29 UTC
  • mfrom: (787.2.8 appscale)
  • Revision ID: cgb@cs.ucsb.edu-20120309233829-27oe2fpf7a01tokw
merged back with main branch

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
 
<html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'>
3
 
  <head>
4
 
    <title>lib/repo.rb</title>
5
 
    <link href="screen.css" media="all" rel="stylesheet" type="text/css" />
6
 
    <link href="print.css" media="print" rel="stylesheet" type="text/css" />
7
 
    
8
 
    <meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
9
 
    <script type="text/javascript" src="rcov.js"></script>
10
 
  </head>
11
 
  <body>
12
 
    <h1>Appcontroller C0 Coverage Information - RCov</h1>
13
 
    <h2>lib/repo.rb</h2>
14
 
 
15
 
    
16
 
 
17
 
    <div class="report_table_wrapper">
18
 
      <table class='report' id='report_table'>
19
 
        <thead>
20
 
          <tr>
21
 
            <th class="left_align">Name</th>
22
 
            <th class="right_align">Total Lines</th>
23
 
            <th class="right_align">Lines of Code</th>
24
 
            <th class="left_align">Total Coverage</th>
25
 
            <th class="left_align">Code Coverage</th>
26
 
          </tr>
27
 
        </thead>
28
 
        <tbody>
29
 
          <tr>
30
 
            <td class="left_align"><a href="lib-repo_rb.html">lib/repo.rb</a></td>
31
 
            <td class='right_align'><tt>100</tt></td>
32
 
            <td class='right_align'><tt>50</tt></td>
33
 
            <td class="left_align"><div class="percent_graph_legend"><tt class=''>50.00%</tt></div>
34
 
          <div class="percent_graph">
35
 
            <div class="covered" style="width:50px"></div>
36
 
            <div class="uncovered" style="width:50px"></div>
37
 
          </div></td>
38
 
            <td class="left_align"><div class="percent_graph_legend"><tt class=''>26.00%</tt></div>
39
 
          <div class="percent_graph">
40
 
            <div class="covered" style="width:26px"></div>
41
 
            <div class="uncovered" style="width:74px"></div>
42
 
          </div></td>
43
 
          </tr>
44
 
        </tbody>
45
 
      </table>
46
 
    </div>
47
 
    
48
 
    <h3>Key</h3>
49
 
    
50
 
    <div class="key"><pre><span class='marked'>Code reported as executed by Ruby looks like this...</span><span class='marked1'>and this: this line is also marked as covered.</span><span class='inferred'>Lines considered as run by rcov, but not reported by Ruby, look like this,</span><span class='inferred1'>and this: these lines were inferred by rcov (using simple heuristics).</span><span class='uncovered'>Finally, here's a line marked as not executed.</span></pre></div>
51
 
 
52
 
    <h3>Coverage Details</h3>
53
 
 
54
 
    <table class="details">
55
 
      <tbody>
56
 
        
57
 
          
58
 
          
59
 
          <tr class="inferred">
60
 
            <td><pre><a name="line1">1</a> #!/usr/bin/ruby -w</pre></td>
61
 
          </tr>
62
 
        
63
 
          
64
 
          
65
 
          <tr class="inferred">
66
 
            <td><pre><a name="line2">2</a> </pre></td>
67
 
          </tr>
68
 
        
69
 
          
70
 
          
71
 
          <tr class="inferred">
72
 
            <td><pre><a name="line3">3</a> </pre></td>
73
 
          </tr>
74
 
        
75
 
          
76
 
          
77
 
          <tr class="marked">
78
 
            <td><pre><a name="line4">4</a> require 'net/http'</pre></td>
79
 
          </tr>
80
 
        
81
 
          
82
 
          
83
 
          <tr class="marked">
84
 
            <td><pre><a name="line5">5</a> require 'uri'</pre></td>
85
 
          </tr>
86
 
        
87
 
          
88
 
          
89
 
          <tr class="marked">
90
 
            <td><pre><a name="line6">6</a> require 'fileutils'</pre></td>
91
 
          </tr>
92
 
        
93
 
          
94
 
          
95
 
          <tr class="inferred">
96
 
            <td><pre><a name="line7">7</a> </pre></td>
97
 
          </tr>
98
 
        
99
 
          
100
 
          
101
 
          <tr class="inferred">
102
 
            <td><pre><a name="line8">8</a> </pre></td>
103
 
          </tr>
104
 
        
105
 
          
106
 
          
107
 
          <tr class="marked">
108
 
            <td><pre><a name="line9">9</a> $:.unshift File.join(File.dirname(__FILE__))</pre></td>
109
 
          </tr>
110
 
        
111
 
          
112
 
          
113
 
          <tr class="marked">
114
 
            <td><pre><a name="line10">10</a> require 'helperfunctions'</pre></td>
115
 
          </tr>
116
 
        
117
 
          
118
 
          
119
 
          <tr class="inferred">
120
 
            <td><pre><a name="line11">11</a> </pre></td>
121
 
          </tr>
122
 
        
123
 
          
124
 
          
125
 
          <tr class="inferred">
126
 
            <td><pre><a name="line12">12</a> </pre></td>
127
 
          </tr>
128
 
        
129
 
          
130
 
          
131
 
          <tr class="marked">
132
 
            <td><pre><a name="line13">13</a> $:.unshift File.join(File.dirname(__FILE__), &quot;..&quot;)</pre></td>
133
 
          </tr>
134
 
        
135
 
          
136
 
          
137
 
          <tr class="marked">
138
 
            <td><pre><a name="line14">14</a> require 'djinn'</pre></td>
139
 
          </tr>
140
 
        
141
 
          
142
 
          
143
 
          <tr class="inferred">
144
 
            <td><pre><a name="line15">15</a> </pre></td>
145
 
          </tr>
146
 
        
147
 
          
148
 
          
149
 
          <tr class="inferred">
150
 
            <td><pre><a name="line16">16</a> </pre></td>
151
 
          </tr>
152
 
        
153
 
          
154
 
          
155
 
          <tr class="inferred">
156
 
            <td><pre><a name="line17">17</a> # Neptune jobs need to store and retrieve data within AppScale, so we have</pre></td>
157
 
          </tr>
158
 
        
159
 
          
160
 
          
161
 
          <tr class="inferred">
162
 
            <td><pre><a name="line18">18</a> # a special Google App Engine application that always runs that acts as</pre></td>
163
 
          </tr>
164
 
        
165
 
          
166
 
          
167
 
          <tr class="inferred">
168
 
            <td><pre><a name="line19">19</a> # a repository (here, shortened to &quot;the Repo&quot;) for this data. This class</pre></td>
169
 
          </tr>
170
 
        
171
 
          
172
 
          
173
 
          <tr class="inferred">
174
 
            <td><pre><a name="line20">20</a> # provides methods that automatically start the Repo and configure it</pre></td>
175
 
          </tr>
176
 
        
177
 
          
178
 
          
179
 
          <tr class="inferred">
180
 
            <td><pre><a name="line21">21</a> # as needed.</pre></td>
181
 
          </tr>
182
 
        
183
 
          
184
 
          
185
 
          <tr class="marked">
186
 
            <td><pre><a name="line22">22</a> class Repo</pre></td>
187
 
          </tr>
188
 
        
189
 
          
190
 
          
191
 
          <tr class="inferred">
192
 
            <td><pre><a name="line23">23</a> </pre></td>
193
 
          </tr>
194
 
        
195
 
          
196
 
          
197
 
          <tr class="inferred">
198
 
            <td><pre><a name="line24">24</a> </pre></td>
199
 
          </tr>
200
 
        
201
 
          
202
 
          
203
 
          <tr class="inferred">
204
 
            <td><pre><a name="line25">25</a>   # The port that nginx should provide access to the Repo app on, by default.</pre></td>
205
 
          </tr>
206
 
        
207
 
          
208
 
          
209
 
          <tr class="marked">
210
 
            <td><pre><a name="line26">26</a>   SERVER_PORT = 8079</pre></td>
211
 
          </tr>
212
 
        
213
 
          
214
 
          
215
 
          <tr class="inferred">
216
 
            <td><pre><a name="line27">27</a> </pre></td>
217
 
          </tr>
218
 
        
219
 
          
220
 
          
221
 
          <tr class="inferred">
222
 
            <td><pre><a name="line28">28</a> </pre></td>
223
 
          </tr>
224
 
        
225
 
          
226
 
          
227
 
          <tr class="marked">
228
 
            <td><pre><a name="line29">29</a>   def self.init(public_ip, private_ip, secret)</pre></td>
229
 
          </tr>
230
 
        
231
 
          
232
 
          
233
 
          <tr class="uncovered">
234
 
            <td><pre><a name="line30">30</a>     @@ip = public_ip</pre></td>
235
 
          </tr>
236
 
        
237
 
          
238
 
          
239
 
          <tr class="uncovered">
240
 
            <td><pre><a name="line31">31</a>     @@private_ip = private_ip</pre></td>
241
 
          </tr>
242
 
        
243
 
          
244
 
          
245
 
          <tr class="uncovered">
246
 
            <td><pre><a name="line32">32</a>     @@secret = secret</pre></td>
247
 
          </tr>
248
 
        
249
 
          
250
 
          
251
 
          <tr class="uncovered">
252
 
            <td><pre><a name="line33">33</a>   end</pre></td>
253
 
          </tr>
254
 
        
255
 
          
256
 
          
257
 
          <tr class="inferred">
258
 
            <td><pre><a name="line34">34</a> </pre></td>
259
 
          </tr>
260
 
        
261
 
          
262
 
          
263
 
          <tr class="inferred">
264
 
            <td><pre><a name="line35">35</a> </pre></td>
265
 
          </tr>
266
 
        
267
 
          
268
 
          
269
 
          <tr class="inferred">
270
 
            <td><pre><a name="line36">36</a>   # So since we can't expose reading class variables directly, this method</pre></td>
271
 
          </tr>
272
 
        
273
 
          
274
 
          
275
 
          <tr class="inferred">
276
 
            <td><pre><a name="line37">37</a>   # exposes just what we need - where the Repo app is hosted.</pre></td>
277
 
          </tr>
278
 
        
279
 
          
280
 
          
281
 
          <tr class="marked">
282
 
            <td><pre><a name="line38">38</a>   def self.get_public_ip()</pre></td>
283
 
          </tr>
284
 
        
285
 
          
286
 
          
287
 
          <tr class="uncovered">
288
 
            <td><pre><a name="line39">39</a>     return @@ip</pre></td>
289
 
          </tr>
290
 
        
291
 
          
292
 
          
293
 
          <tr class="uncovered">
294
 
            <td><pre><a name="line40">40</a>   end</pre></td>
295
 
          </tr>
296
 
        
297
 
          
298
 
          
299
 
          <tr class="inferred">
300
 
            <td><pre><a name="line41">41</a> </pre></td>
301
 
          </tr>
302
 
        
303
 
          
304
 
          
305
 
          <tr class="inferred">
306
 
            <td><pre><a name="line42">42</a>   # Starts the Repo application. Since it's a Google App Engine app, we throw</pre></td>
307
 
          </tr>
308
 
        
309
 
          
310
 
          
311
 
          <tr class="inferred">
312
 
            <td><pre><a name="line43">43</a>   # up all the usual services for it (nginx/haproxy/AppServers), and wait for</pre></td>
313
 
          </tr>
314
 
        
315
 
          
316
 
          
317
 
          <tr class="inferred">
318
 
            <td><pre><a name="line44">44</a>   # them to start up. We don't register the app with the UAServer right now</pre></td>
319
 
          </tr>
320
 
        
321
 
          
322
 
          
323
 
          <tr class="inferred">
324
 
            <td><pre><a name="line45">45</a>   # since we don't necessarily want users accessing it.</pre></td>
325
 
          </tr>
326
 
        
327
 
          
328
 
          
329
 
          <tr class="inferred">
330
 
            <td><pre><a name="line46">46</a>   # TODO(cgb): Let it register with the UAServer but change the Repo app to</pre></td>
331
 
          </tr>
332
 
        
333
 
          
334
 
          
335
 
          <tr class="inferred">
336
 
            <td><pre><a name="line47">47</a>   # prevent unauthorized access.</pre></td>
337
 
          </tr>
338
 
        
339
 
          
340
 
          
341
 
          <tr class="marked">
342
 
            <td><pre><a name="line48">48</a>   def self.start(login_ip, uaserver_ip)</pre></td>
343
 
          </tr>
344
 
        
345
 
          
346
 
          
347
 
          <tr class="uncovered">
348
 
            <td><pre><a name="line49">49</a>     # its just another app engine app - but since numbering starts</pre></td>
349
 
          </tr>
350
 
        
351
 
          
352
 
          
353
 
          <tr class="uncovered">
354
 
            <td><pre><a name="line50">50</a>     # at zero, this app has to be app neg one</pre></td>
355
 
          </tr>
356
 
        
357
 
          
358
 
          
359
 
          <tr class="uncovered">
360
 
            <td><pre><a name="line51">51</a> </pre></td>
361
 
          </tr>
362
 
        
363
 
          
364
 
          
365
 
          <tr class="uncovered">
366
 
            <td><pre><a name="line52">52</a>     # TODO: tell the tools to disallow uploading apps called 'therepo'</pre></td>
367
 
          </tr>
368
 
        
369
 
          
370
 
          
371
 
          <tr class="uncovered">
372
 
            <td><pre><a name="line53">53</a>     # and start_appengine to do the same</pre></td>
373
 
          </tr>
374
 
        
375
 
          
376
 
          
377
 
          <tr class="uncovered">
378
 
            <td><pre><a name="line54">54</a> </pre></td>
379
 
          </tr>
380
 
        
381
 
          
382
 
          
383
 
          <tr class="uncovered">
384
 
            <td><pre><a name="line55">55</a>     num_servers = 3</pre></td>
385
 
          </tr>
386
 
        
387
 
          
388
 
          
389
 
          <tr class="uncovered">
390
 
            <td><pre><a name="line56">56</a>     app_number = -1</pre></td>
391
 
          </tr>
392
 
        
393
 
          
394
 
          
395
 
          <tr class="uncovered">
396
 
            <td><pre><a name="line57">57</a>     app = &quot;therepo&quot;</pre></td>
397
 
          </tr>
398
 
        
399
 
          
400
 
          
401
 
          <tr class="uncovered">
402
 
            <td><pre><a name="line58">58</a>     app_language = &quot;python&quot;</pre></td>
403
 
          </tr>
404
 
        
405
 
          
406
 
          
407
 
          <tr class="uncovered">
408
 
            <td><pre><a name="line59">59</a>     app_version = &quot;1&quot;</pre></td>
409
 
          </tr>
410
 
        
411
 
          
412
 
          
413
 
          <tr class="uncovered">
414
 
            <td><pre><a name="line60">60</a> </pre></td>
415
 
          </tr>
416
 
        
417
 
          
418
 
          
419
 
          <tr class="uncovered">
420
 
            <td><pre><a name="line61">61</a>     app_location = &quot;/var/apps/#{app}/app&quot;</pre></td>
421
 
          </tr>
422
 
        
423
 
          
424
 
          
425
 
          <tr class="uncovered">
426
 
            <td><pre><a name="line62">62</a>     Djinn.log_run(&quot;mkdir -p #{app_location}&quot;)</pre></td>
427
 
          </tr>
428
 
        
429
 
          
430
 
          
431
 
          <tr class="uncovered">
432
 
            <td><pre><a name="line63">63</a>     Djinn.log_run(&quot;cp -r #{APPSCALE_HOME}/AppServer/demos/therepo/* #{app_location}&quot;)</pre></td>
433
 
          </tr>
434
 
        
435
 
          
436
 
          
437
 
          <tr class="uncovered">
438
 
            <td><pre><a name="line64">64</a>     HelperFunctions.setup_app(app, untar=false)</pre></td>
439
 
          </tr>
440
 
        
441
 
          
442
 
          
443
 
          <tr class="uncovered">
444
 
            <td><pre><a name="line65">65</a> </pre></td>
445
 
          </tr>
446
 
        
447
 
          
448
 
          
449
 
          <tr class="uncovered">
450
 
            <td><pre><a name="line66">66</a>     repo_main_code = &quot;#{app_location}/repo.py&quot;</pre></td>
451
 
          </tr>
452
 
        
453
 
          
454
 
          
455
 
          <tr class="uncovered">
456
 
            <td><pre><a name="line67">67</a>     file_w_o_secret = HelperFunctions.read_file(repo_main_code)</pre></td>
457
 
          </tr>
458
 
        
459
 
          
460
 
          
461
 
          <tr class="uncovered">
462
 
            <td><pre><a name="line68">68</a>     file_w_secret = file_w_o_secret.gsub(&quot;PLACE SECRET HERE&quot;, @@secret)</pre></td>
463
 
          </tr>
464
 
        
465
 
          
466
 
          
467
 
          <tr class="uncovered">
468
 
            <td><pre><a name="line69">69</a>     HelperFunctions.write_file(repo_main_code, file_w_secret)</pre></td>
469
 
          </tr>
470
 
        
471
 
          
472
 
          
473
 
          <tr class="uncovered">
474
 
            <td><pre><a name="line70">70</a> </pre></td>
475
 
          </tr>
476
 
        
477
 
          
478
 
          
479
 
          <tr class="uncovered">
480
 
            <td><pre><a name="line71">71</a>     static_handlers = HelperFunctions.parse_static_data(app)</pre></td>
481
 
          </tr>
482
 
        
483
 
          
484
 
          
485
 
          <tr class="uncovered">
486
 
            <td><pre><a name="line72">72</a>     proxy_port = HAProxy.app_listen_port(app_number)</pre></td>
487
 
          </tr>
488
 
        
489
 
          
490
 
          
491
 
          <tr class="uncovered">
492
 
            <td><pre><a name="line73">73</a>     Nginx.write_app_config(app, app_number, @@ip, proxy_port, static_handlers, login_ip)</pre></td>
493
 
          </tr>
494
 
        
495
 
          
496
 
          
497
 
          <tr class="uncovered">
498
 
            <td><pre><a name="line74">74</a>     HAProxy.write_app_config(app, app_number, num_servers, @@private_ip)</pre></td>
499
 
          </tr>
500
 
        
501
 
          
502
 
          
503
 
          <tr class="uncovered">
504
 
            <td><pre><a name="line75">75</a>     Collectd.write_app_config(app)</pre></td>
505
 
          </tr>
506
 
        
507
 
          
508
 
          
509
 
          <tr class="uncovered">
510
 
            <td><pre><a name="line76">76</a> </pre></td>
511
 
          </tr>
512
 
        
513
 
          
514
 
          
515
 
          <tr class="uncovered">
516
 
            <td><pre><a name="line77">77</a>     [19997, 19998, 19999].each { |port|</pre></td>
517
 
          </tr>
518
 
        
519
 
          
520
 
          
521
 
          <tr class="uncovered">
522
 
            <td><pre><a name="line78">78</a>       Djinn.log_debug(&quot;Starting #{app_language} app #{app} on #{HelperFunctions.local_ip}:#{port}&quot;)</pre></td>
523
 
          </tr>
524
 
        
525
 
          
526
 
          
527
 
          <tr class="uncovered">
528
 
            <td><pre><a name="line79">79</a>       pid = HelperFunctions.run_app(app, port, uaserver_ip, @@ip, @@private_ip, app_version, app_language, SERVER_PORT, login_ip)</pre></td>
529
 
          </tr>
530
 
        
531
 
          
532
 
          
533
 
          <tr class="uncovered">
534
 
            <td><pre><a name="line80">80</a>       pid_file_name = &quot;#{APPSCALE_HOME}/.appscale/#{app}-#{port}.pid&quot;</pre></td>
535
 
          </tr>
536
 
        
537
 
          
538
 
          
539
 
          <tr class="uncovered">
540
 
            <td><pre><a name="line81">81</a>       HelperFunctions.write_file(pid_file_name, pid)</pre></td>
541
 
          </tr>
542
 
        
543
 
          
544
 
          
545
 
          <tr class="uncovered">
546
 
            <td><pre><a name="line82">82</a>     }</pre></td>
547
 
          </tr>
548
 
        
549
 
          
550
 
          
551
 
          <tr class="uncovered">
552
 
            <td><pre><a name="line83">83</a> </pre></td>
553
 
          </tr>
554
 
        
555
 
          
556
 
          
557
 
          <tr class="uncovered">
558
 
            <td><pre><a name="line84">84</a>     Nginx.reload</pre></td>
559
 
          </tr>
560
 
        
561
 
          
562
 
          
563
 
          <tr class="uncovered">
564
 
            <td><pre><a name="line85">85</a>     Collectd.restart</pre></td>
565
 
          </tr>
566
 
        
567
 
          
568
 
          
569
 
          <tr class="uncovered">
570
 
            <td><pre><a name="line86">86</a>   end</pre></td>
571
 
          </tr>
572
 
        
573
 
          
574
 
          
575
 
          <tr class="inferred">
576
 
            <td><pre><a name="line87">87</a> </pre></td>
577
 
          </tr>
578
 
        
579
 
          
580
 
          
581
 
          <tr class="inferred">
582
 
            <td><pre><a name="line88">88</a> </pre></td>
583
 
          </tr>
584
 
        
585
 
          
586
 
          
587
 
          <tr class="inferred">
588
 
            <td><pre><a name="line89">89</a>   # Stops the Repo app.</pre></td>
589
 
          </tr>
590
 
        
591
 
          
592
 
          
593
 
          <tr class="inferred">
594
 
            <td><pre><a name="line90">90</a>   # TODO(cgb): This kills all AppServers, which definitely is not the correct</pre></td>
595
 
          </tr>
596
 
        
597
 
          
598
 
          
599
 
          <tr class="inferred">
600
 
            <td><pre><a name="line91">91</a>   # thing to do. Since the Repo is an App Engine app, we should be able to use</pre></td>
601
 
          </tr>
602
 
        
603
 
          
604
 
          
605
 
          <tr class="inferred">
606
 
            <td><pre><a name="line92">92</a>   # the other functions that stop App Engine apps here as well.</pre></td>
607
 
          </tr>
608
 
        
609
 
          
610
 
          
611
 
          <tr class="marked">
612
 
            <td><pre><a name="line93">93</a>   def self.stop</pre></td>
613
 
          </tr>
614
 
        
615
 
          
616
 
          
617
 
          <tr class="uncovered">
618
 
            <td><pre><a name="line94">94</a>     Djinn.log_debug(`pkill -f dev_appserver`)</pre></td>
619
 
          </tr>
620
 
        
621
 
          
622
 
          
623
 
          <tr class="uncovered">
624
 
            <td><pre><a name="line95">95</a>     Djinn.log_debug(`pkill -f DevAppServerMain`)</pre></td>
625
 
          </tr>
626
 
        
627
 
          
628
 
          
629
 
          <tr class="uncovered">
630
 
            <td><pre><a name="line96">96</a>   end</pre></td>
631
 
          </tr>
632
 
        
633
 
          
634
 
          
635
 
          <tr class="uncovered">
636
 
            <td><pre><a name="line97">97</a> </pre></td>
637
 
          </tr>
638
 
        
639
 
          
640
 
          
641
 
          <tr class="uncovered">
642
 
            <td><pre><a name="line98">98</a> </pre></td>
643
 
          </tr>
644
 
        
645
 
          
646
 
          
647
 
          <tr class="uncovered">
648
 
            <td><pre><a name="line99">99</a> end</pre></td>
649
 
          </tr>
650
 
        
651
 
          
652
 
          
653
 
          <tr class="inferred">
654
 
            <td><pre><a name="line100">100</a> </pre></td>
655
 
          </tr>
656
 
        
657
 
      </tbody>
658
 
    </table>
659
 
 
660
 
    <p>Generated on Sun Feb 26 23:19:27 -0800 2012 with <a href="http://github.com/relevance/rcov">rcov 0.9.8</a></p>
661
 
 
662
 
  </body>
663
 
</html>