mongrel_esi 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. data/COPYING +53 -0
  2. data/LICENSE +471 -0
  3. data/README +186 -0
  4. data/Rakefile +141 -0
  5. data/bin/mongrel_esi +271 -0
  6. data/ext/esi/common.rl +41 -0
  7. data/ext/esi/esi_parser.c +387 -0
  8. data/ext/esi/extconf.rb +6 -0
  9. data/ext/esi/machine.rb +499 -0
  10. data/ext/esi/parser.c +1675 -0
  11. data/ext/esi/parser.h +113 -0
  12. data/ext/esi/parser.rb +49 -0
  13. data/ext/esi/parser.rl +398 -0
  14. data/ext/esi/ruby_esi.rl +135 -0
  15. data/ext/esi/run-test.rb +3 -0
  16. data/ext/esi/test/common.rl +41 -0
  17. data/ext/esi/test/parser.c +1676 -0
  18. data/ext/esi/test/parser.h +113 -0
  19. data/ext/esi/test/parser.rl +398 -0
  20. data/ext/esi/test/test.c +373 -0
  21. data/ext/esi/test1.rb +56 -0
  22. data/ext/esi/test2.rb +45 -0
  23. data/lib/esi/cache.rb +207 -0
  24. data/lib/esi/config.rb +154 -0
  25. data/lib/esi/dispatcher.rb +27 -0
  26. data/lib/esi/handler.rb +236 -0
  27. data/lib/esi/invalidator.rb +40 -0
  28. data/lib/esi/logger.rb +46 -0
  29. data/lib/esi/router.rb +84 -0
  30. data/lib/esi/tag/attempt.rb +6 -0
  31. data/lib/esi/tag/base.rb +85 -0
  32. data/lib/esi/tag/except.rb +24 -0
  33. data/lib/esi/tag/include.rb +190 -0
  34. data/lib/esi/tag/invalidate.rb +54 -0
  35. data/lib/esi/tag/try.rb +40 -0
  36. data/lib/multi_dirhandler.rb +70 -0
  37. data/setup.rb +1585 -0
  38. data/test/integration/basic_test.rb +39 -0
  39. data/test/integration/cache_test.rb +37 -0
  40. data/test/integration/docs/content/500.html +16 -0
  41. data/test/integration/docs/content/500_with_failover.html +16 -0
  42. data/test/integration/docs/content/500_with_failover_to_alt.html +8 -0
  43. data/test/integration/docs/content/ajax_test_page.html +15 -0
  44. data/test/integration/docs/content/cookie_variable.html +3 -0
  45. data/test/integration/docs/content/foo.html +15 -0
  46. data/test/integration/docs/content/include_in_include.html +15 -0
  47. data/test/integration/docs/content/malformed_transforms.html +16 -0
  48. data/test/integration/docs/content/malformed_transforms.html-correct +11 -0
  49. data/test/integration/docs/content/static-failover.html +20 -0
  50. data/test/integration/docs/content/test2.html +1 -0
  51. data/test/integration/docs/content/test3.html +17 -0
  52. data/test/integration/docs/esi_invalidate.html +6 -0
  53. data/test/integration/docs/esi_mixed_content.html +15 -0
  54. data/test/integration/docs/esi_test_content.html +27 -0
  55. data/test/integration/docs/index.html +688 -0
  56. data/test/integration/docs/test1.html +1 -0
  57. data/test/integration/docs/test3.html +9 -0
  58. data/test/integration/docs/test_failover.html +1 -0
  59. data/test/integration/handler_test.rb +270 -0
  60. data/test/integration/help.rb +234 -0
  61. data/test/net/get_test.rb +197 -0
  62. data/test/net/net_helper.rb +16 -0
  63. data/test/net/server_test.rb +249 -0
  64. data/test/unit/base_tag_test.rb +44 -0
  65. data/test/unit/esi-sample.html +56 -0
  66. data/test/unit/help.rb +77 -0
  67. data/test/unit/include_request_test.rb +69 -0
  68. data/test/unit/include_tag_test.rb +14 -0
  69. data/test/unit/parser_test.rb +478 -0
  70. data/test/unit/router_test.rb +34 -0
  71. data/test/unit/sample.html +21 -0
  72. data/tools/rakehelp.rb +119 -0
  73. metadata +182 -0
@@ -0,0 +1,39 @@
1
+ require "#{File.dirname(__FILE__)}/help"
2
+
3
+ class BasicTest < Test::Unit::TestCase
4
+
5
+ def test_simple_initalize
6
+ assert_nothing_raised do
7
+ dispatcher = ESI::Dispatcher.new(
8
+ :host => '127.0.0.1',
9
+ :port => 9997,
10
+ :cwd => SERVER_ROOT,
11
+ :log_file => 'log/test.log',
12
+ :pid_file => 'log/test.pid',
13
+ :daemon => false,
14
+ :debug => true,
15
+ :includes => ["mongrel-esi"],
16
+ :user => nil,
17
+ :group => nil,
18
+ :prefix => '/',
19
+ :config_file => nil,
20
+ :routing => [{:host => '127.0.0.1', :port => '9999', :match_url => '^\/(content|samples|extra|get_test).*'},
21
+ {:host => '127.0.0.1', :port => '9998', :match_url => 'default'}],
22
+ :cache => 'ruby',
23
+ :cache_options => {:servers => ['localhost:11211'], :debug => false, :namespace => 'mesi', :readyonly => false},
24
+ :allowed_content_types => ['text/plain', 'text/html'],
25
+ :enable_for_surrogate_only => false,
26
+ :invalidator => false
27
+ )
28
+ handler = ESI::Handler.new(dispatcher)
29
+ end
30
+ end
31
+
32
+ def test_router
33
+ router = ESI::Router.new( [{:host => '127.0.0.1', :port => '9999', :match_url => '^\/(content|samples|extra|get_test).*'},
34
+ {:host => '127.0.0.1', :port => '9998', :match_url => 'default'}] )
35
+ assert_equal "http://127.0.0.1:9999/content/foo.html", router.url_for("/content/foo.html")
36
+ assert_equal "http://127.0.0.1:9998/esi_mixed_content.html", router.url_for("/esi_mixed_content.html")
37
+ end
38
+
39
+ end
@@ -0,0 +1,37 @@
1
+ require "#{File.dirname(__FILE__)}/help"
2
+ require 'esi/cache'
3
+
4
+ class CacheTest < Test::Unit::TestCase
5
+
6
+ def test_can_cache
7
+ cache = ESI::RubyCache.new
8
+ value = "test"
9
+ cache.put( "key", {}, 10, value )
10
+ fragment = cache.get("key", {} )
11
+ assert_equal value, fragment.body
12
+ assert fragment.valid?
13
+ end
14
+
15
+ def test_can_cache_with_invalidator
16
+ cache = ESI::RubyCache.new( :locked => true )
17
+ value = "test"
18
+ cache.put( "key", {}, 10, value )
19
+ fragment = cache.get("key", {} )
20
+ assert_equal value, fragment.body
21
+ assert fragment.valid?
22
+ end
23
+
24
+ =begin
25
+ # XXX: setup a test server for memcache testing
26
+ def test_memcached
27
+ cache = ESI::MemcachedCache.new( {'servers' => 'localhost:11211', :namespace => "mesi" } )
28
+ value = "test"
29
+ cache.put( "key", {}, 10, value )
30
+ fragment = cache.get("key", {} )
31
+ puts fragment.inspect
32
+ assert_equal value, fragment.body
33
+ assert fragment.valid?
34
+ end
35
+ =end
36
+
37
+ end
@@ -0,0 +1,16 @@
1
+ <html>
2
+ <head>
3
+ </head>
4
+ <body>
5
+ <h1>testing whether markup is altered after passing through cache</h1>
6
+ <a href="#"/>
7
+ <esi:try>
8
+ <esi:attempt>
9
+ <esi:include src="/will-respond-with-a-400" max-age="600+600"/>
10
+ </esi:attempt>
11
+ <esi:except>
12
+ <esi:include src="/will-respond-with-a-400"/>
13
+ </esi:except>
14
+ </esi:try>
15
+ </body>
16
+ </html>
@@ -0,0 +1,16 @@
1
+ <html>
2
+ <head>
3
+ </head>
4
+ <body>
5
+ <h1>testing whether markup is altered after passing through cache</h1>
6
+ <a href="#"/>
7
+ <esi:try>
8
+ <esi:attempt>
9
+ <esi:include src="/will-respond-with-a-400" max-age="600+600"/>
10
+ </esi:attempt>
11
+ <esi:except>
12
+ <esi:include src="/fragments/test1.html" max-age="600+600"/>
13
+ </esi:except>
14
+ </esi:try>
15
+ </body>
16
+ </html>
@@ -0,0 +1,8 @@
1
+ <html>
2
+ <head>
3
+ </head>
4
+ <body>
5
+ <h1>testing alt</h1>
6
+ <esi:include src="/will-respond-with-a-400" alt="/fragments/test1.html" max-age="600+600"/>
7
+ </body>
8
+ </html>
@@ -0,0 +1,15 @@
1
+ <html>
2
+ <head>
3
+ </head>
4
+ <body>
5
+ <h1>This is a test document for esi fragments being request using ajax</h1>
6
+ <esi:try>
7
+ <esi:attempt>
8
+ <esi:include src="/get_test" max-age="600+600"/>
9
+ </esi:attempt>
10
+ <esi:except>
11
+ <esi:include src="/get_test"/>
12
+ </esi:except>
13
+ </esi:try>
14
+ </body>
15
+ </html>
@@ -0,0 +1,3 @@
1
+ <h1>This is the main weblog view</h1>
2
+ Here's an article:<br/>
3
+ <esi:include src="/fragments/test1.html?$(HTTP_COOKIE{type})" />
@@ -0,0 +1,15 @@
1
+ <html>
2
+ <head>
3
+ </head>
4
+ <body>
5
+ <h1>This is a test document</h1>
6
+ <esi:try>
7
+ <esi:attempt>
8
+ <esi:include src="/content/test2.html" max-age="600+600"/>
9
+ </esi:attempt>
10
+ <esi:except>
11
+ <esi:include src="/fragments/test_failover.html"/>
12
+ </esi:except>
13
+ </esi:try>
14
+ </body>
15
+ </html>
@@ -0,0 +1,15 @@
1
+ <html>
2
+ <head>
3
+ </head>
4
+ <body>
5
+ <h1>This test will determine whether or not we can request multiple esi fragments within a single fragment</h1>
6
+ <esi:try>
7
+ <esi:attempt>
8
+ <esi:include src="/fragments/test3.html" max-age="600+600"/>
9
+ </esi:attempt>
10
+ <esi:except>
11
+ <esi:include src="/fragments/test3.html"/>
12
+ </esi:except>
13
+ </esi:try>
14
+ </body>
15
+ </html>
@@ -0,0 +1,16 @@
1
+ <html>
2
+ <head>
3
+ </head>
4
+ <body>
5
+ <h1>testing whether markup is altered after passing through cache</h1>
6
+ <a href="#"/>
7
+ <esi:try>
8
+ <esi:attempt>
9
+ <esi:include src="/get_test" max-age="600+600"/>
10
+ </esi:attempt>
11
+ <esi:except>
12
+ <esi:include src="/get_test"/>
13
+ </esi:except>
14
+ </esi:try>
15
+ </body>
16
+ </html>
@@ -0,0 +1,11 @@
1
+ <html>
2
+ <head>
3
+ </head>
4
+ <body>
5
+ <h1>testing whether markup is altered after passing through cache</h1>
6
+ <a href="#"/>
7
+
8
+
9
+ HTTP Request
10
+ </body>
11
+ </html>
@@ -0,0 +1,20 @@
1
+ <html>
2
+ <body>
3
+ <h1>This is the main weblog view</h1>
4
+ Here's an article:<br/>
5
+ <!-- The alt thing below is just an experiment and a demo of using the alt attribute -->
6
+ <esi:include src="/fragments/test1.html" method="GET" redirect="no" timeout="2"/>
7
+
8
+ <esi:include src="/fragments/test1.html" method="GET" redirect="no" timeout="2"/>
9
+
10
+
11
+ <esi:try>
12
+ <esi:attempt>
13
+ <esi:include src="/will-respond-with-a-400"/>
14
+ </esi:attempt>
15
+ <esi:except>
16
+ <a href="www.akamai.com">www.example.com </a>
17
+ </esi:except>
18
+ </esi:try>
19
+ </body>
20
+ </html>
@@ -0,0 +1 @@
1
+ <div>test2</div>
@@ -0,0 +1,17 @@
1
+ <html>
2
+ <head>
3
+ </head>
4
+ <body>
5
+ <h1>Testing whether markup within an attempt block is retained after passing through the cache</h1>
6
+ <esi:try>
7
+ <esi:attempt>
8
+ <p>Some markup that should not be lost</p>
9
+ <esi:include src="/get_test" max-age="600+600"/>
10
+ </esi:attempt>
11
+ <esi:except>
12
+ <p>Exception, without any includes</p>
13
+ </esi:except>
14
+ </esi:try>
15
+ </body>
16
+ </html>
17
+
@@ -0,0 +1,6 @@
1
+ <html>
2
+ <body>
3
+ <h1>Include invalidating modules</h1>
4
+ <esi:include src="/invalidate" max-age="600+600"/>
5
+ </body>
6
+ </html>
@@ -0,0 +1,15 @@
1
+ <html>
2
+ <head>
3
+ </head>
4
+ <body>
5
+ <h1>This is a test document</h1>
6
+ <esi:try>
7
+ <esi:attempt>
8
+ <div>Some content before</div><esi:include src="/fragments/test1.html" max-age="600+600"/>
9
+ </esi:attempt>
10
+ <esi:except>
11
+ <esi:include src="/fragments/test_failover.html"/>
12
+ </esi:except>
13
+ </esi:try>
14
+ </body>
15
+ </html>
@@ -0,0 +1,27 @@
1
+ <html>
2
+ <head>
3
+ </head>
4
+ <body>
5
+ <h1>This is a test document</h1>
6
+ <esi:try>
7
+ invalid
8
+ <esi:attempt>
9
+ valid
10
+ <esi:include src="/fragments/test1.html" max-age="600+600"/>
11
+ </esi:attempt>
12
+ <esi:except>
13
+ <esi:include src="/fragments/test_failover.html"/>
14
+ valid
15
+ </esi:except>
16
+ invalid
17
+ </esi:try>
18
+ <esi:try>
19
+ <esi:attempt>
20
+ <esi:include src="/content/test2.html" max-age="600+600"/>
21
+ </esi:attempt>
22
+ <esi:except>
23
+ <esi:include src="/fragments/test_failover.html"/>
24
+ </esi:except>
25
+ </esi:try>
26
+ </body>
27
+ </html>
@@ -0,0 +1,688 @@
1
+
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml">
4
+ <head>
5
+ <title> Sample Webcoolzone - Sample Webcoolzone</title><meta name="keywords" content=" "/><meta name="description" content="Sample Webcoolzone"/><link rel="nycv1" href="/w3c/nyc.xml" />
6
+ <link rel='icon' href='/images/common/icons/favicon.ico' type='image/x-icon'/>
7
+ <link rel='shortcut icon' href='/images/common/icons/favicon.ico' type='image/x-icon'/>
8
+ <link href="/stylesheets/ver2/reset.css,ver2/typography.css,ver2/text_resize.css,ver2/icons.css,ver2/ads.css,ver2/colors.css,ver2/header.css,ver2/the-end.css,ver2/article.css,ver2/main_navigation.css,ver2/archetype.css,ver2/nav_slot.css,ver2/form.css,ver2/layout.css,ver2/buttons.css,ver2/yum yum yumules.css,ver2/COOL.css,ver2/page_controls.css,ver2/icons.css?52532" media="all" rel="stylesheet" type="text/css"/>
9
+ <link href="/stylesheets/ver2/paginate.css,ver2/hover_bubble.css,fabric/clipping_tools.css,fabric/page_controls.css,ver2/i like to eateating.css,ver2/wysiwig.css,ver2/user_generated.css,ver2/images.css,ver2/dialog.css,ver2/interstitial.css,ver2/comdudests.css,ver2/user_profile.css,ver2/promotional_i like to eat_fair.css,ver2/ui/tabbed.css,ver2/ui/selector.css,ver2/ui/drawers.css,ver2/ui/results_table.css,ver2/features/ratings.css,ver2/features/search_input.css?21192" media="all" rel="stylesheet" type="text/css"/>
10
+ <link href="/stylesheets/ver2/features/mini_dash.css,ver2/features/tag_cloud.css,ver2/features/word_wheel.css,ver2/features/error_bar.css,ver2/features/careless eatingousel.css,ver2/features/avatar_picker.css,COOL_ratings/ratings.css,COOL_ratings/pill.css,ver2/yum yum yumules/yum yum yumule_dhm_stackup.css,ver2/yum yum yumules/yum yum yumule_rating.css,ver2/yum yum yumules/yum yum yumule_lost in space_a_doc.css,ver2/yum yum yumules/yum yum yumule_promo.css,ver2/yum yum yumules/yum yum yumule_featured_image.css,ver2/yum yum yumules/yum yum yumule_Gold_chest.css,ver2/newsletters.css?13909" media="all" rel="stylesheet" type="text/css"/>
11
+ <script type="text/javascript" src="/javascripts/prototype.js?73403"></script>
12
+ <script type="text/javascript" src="/javascripts/prototype-extension.js?64879"></script>
13
+ <script type="text/javascript" src="/javascripts/effects.js?6692"></script>
14
+ <script type="text/javascript" src="/javascripts/effects-extension.js?83802"></script>
15
+ <script type="text/javascript" src="/javascripts/controls.js?62315"></script>
16
+ <script type="text/javascript" src="/javascripts/dragdrop.js?2683"></script>
17
+ <script type="text/javascript" src="/javascripts/slider.js?15639"></script>
18
+ <script type="text/javascript" src="/javascripts/dom-loaded.js?91287"></script>
19
+ <script type="text/javascript" src="/javascripts/state_names.js?24581"></script>
20
+ <script type="text/javascript" src="/javascripts/ui/Widget.js?32484"></script>
21
+ <script type="text/javascript" src="/javascripts/ui/QuoteWidget.js?50149"></script>
22
+ <script type="text/javascript" src="/javascripts/ui/ProfiledudesuToggleWidget.js?58631"></script>
23
+ <script type="text/javascript" src="/javascripts/ui/QnaToggleWidget.js?97808"></script>
24
+ <script type="text/javascript" src="/javascripts/ui/InputLabel.js?32093"></script>
25
+ <script type="text/javascript" src="/javascripts/ui/HoverBubble.js?68934"></script>
26
+ <script type="text/javascript" src="/javascripts/ui/DismissableWidget.js?25232"></script>
27
+ <script type="text/javascript" src="/javascripts/ui/CollapsibleWidget.js?39050"></script>
28
+ <script type="text/javascript" src="/javascripts/ui/TargetedCollapsibleSectionWidget.js?88506"></script>
29
+ <script type="text/javascript" src="/javascripts/ui/ObserveWidget.js?40964"></script>
30
+ <script type="text/javascript" src="/javascripts/cookies.js?93781"></script>
31
+ <script type="text/javascript" src="/javascripts/ads.js?9334"></script>
32
+ <script type="text/javascript" src="/javascripts/form_controls.js?44214"></script>
33
+ <script type="text/javascript" src="/javascripts/search/word_wheel.js?59417"></script>
34
+ <script type="text/javascript" src="/javascripts/alerts.js?1615"></script>
35
+ <script type="text/javascript" src="/javascripts/reviews/reviews.js?63760"></script>
36
+ <script type="text/javascript" src="/javascripts/ratings/ratings.js?59383"></script>
37
+ <script type="text/javascript" src="/javascripts/dialog.js?90"></script>
38
+ <script type="text/javascript" src="/javascripts/remote-dialog.js?97923"></script>
39
+ <script type="text/javascript" src="/javascripts/tab-nav.js?36260"></script>
40
+ <script type="text/javascript" src="/javascripts/drawer.js?45683"></script>
41
+ <script type="text/javascript" src="/javascripts/timeless-timeout.js?97381"></script>
42
+ <script type="text/javascript" src="/javascripts/text_size.js?62425"></script>
43
+ <script type="text/javascript" src="/javascripts/global_yum yum yumules.js?30779"></script>
44
+ <script type="text/javascript" src="/javascripts/cool factors_checker.js?30529"></script>
45
+ <script type="text/javascript" src="/javascripts/ui/SearchDrawerWidget.js?3088"></script>
46
+ <script type="text/javascript" src="/javascripts/computers.js?57093"></script>
47
+ <script type="text/javascript" src="/javascripts/swfobject.js?69615"></script>
48
+ <script type="text/javascript" src="/javascripts/yum yum yumeration.js?35429"></script>
49
+ <script type="text/javascript" src="/javascripts/profiles.js?48395"></script>
50
+ <script type="text/javascript" src="/javascripts/medications/med_manager.js?27922"></script>
51
+ <script type="text/javascript" src="/javascripts/medications/med_wordwheel.js?90591"></script>
52
+ <script type="text/javascript" src="/javascripts/application.js?29203"></script>
53
+ <script type="text/javascript" src="/javascripts/ui/FlashWidget.js?3647"></script>
54
+ <script type="text/javascript" src="/javascripts/ui/NumberedFlashWidget.js?67650"></script>
55
+ <script type="text/javascript" src="/javascripts/ui/TabbedFlashWidget.js?11187"></script>
56
+ <script type="text/javascript" src="/javascripts/ui/PopupLinkWidget.js?17639"></script>
57
+ <script type="text/javascript" src="/javascripts/ui/careless eatingousel.js?21428"></script>
58
+ <script type="text/javascript" src="/javascripts/ui/SendPage.js?22209"></script>
59
+ <script type="text/javascript" src="/javascripts/ui/Progress.js?64130"></script>
60
+ <script type="text/javascript" src="/javascripts/ui/Validations.js?12264"></script>
61
+ <script type="text/javascript" src="/javascripts/fabric/globals.js?41485"></script>
62
+ <script type="text/javascript" src="/javascripts/javascript_validations.js?42573"></script>
63
+ <script type="text/javascript" src="/javascripts/COOL_ratings/RatingButton.js?39273"></script>
64
+ <script type="text/javascript" src="/javascripts/careless eatingousel.js?99843"></script>
65
+ <script type="text/javascript" src="/javascripts/supereating/yum yum yumules.js?10611"></script>
66
+ <script type="text/javascript">timelessTimeOut.timeOutInterval = 63; timelessTimeOut.timeOutWarnInterval = 61;</script>
67
+ <link href="/stylesheets/Bacon/Bacon.css?17941" media="all" rel="stylesheet" type="text/css"/>
68
+ <link href="/stylesheets/ver2/print.css?54837" media="print" rel="stylesheet" type="text/css"/>
69
+ <!--[if lt IE 7.]>
70
+ <link href="/stylesheets/ver2/iefix.css?46993" media="all" rel="stylesheet" type="text/css"/>
71
+ <script type="text/javascript" src="/javascripts/iefix.js?19293"></script>
72
+ <![endif]-->
73
+ <script type="text/javascript" src="/javascripts/swfobject.js?41576"></script>
74
+ <script type="text/javascript" src="/javascripts/Bacon.js?98916"></script>
75
+ </head>
76
+ <body class="article_page page_Bacon_page">
77
+
78
+ <script type="text/javascript">//<![CDATA[
79
+ var s_account="feedsforme";
80
+ //]]></script>
81
+
82
+
83
+ <script type="text/javascript" src="/javascripts/knowledge-yum yum yumified.js"></script>
84
+
85
+ <script type="text/javascript">//<![CDATA[
86
+ s.eVar2 = s.pageName="Bacon";
87
+ s.eVar3 = s.channel="Bacon Page";
88
+ s.hier1 = s.prop5 = "Bacon";
89
+ //]]></script>
90
+
91
+ <esi:try>
92
+ <esi:attempt>
93
+
94
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
95
+
96
+ </esi:attempt>
97
+ <esi:except>
98
+ <p>sorry</p>
99
+ </esi:except>
100
+ </esi:try>
101
+ <!--[if lt IE 7.]><div class='ie ie6'><![endif]--><!--[if IE 7]><div class='ie ie7'><![endif]-->
102
+ <script type="text/javascript">//<![CDATA[
103
+ var d = totallyCoolTricks();if( d.browser != "ie" ){ docududest.write( "<div class='" + d.browser + " " + d.os + "'>" ); }
104
+ //]]></script>
105
+ <div id="container" class="utility product_">
106
+
107
+
108
+ <div id="header" class='debug'>
109
+ <div class="box">
110
+
111
+ <esi:try>
112
+ <esi:attempt>
113
+
114
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
115
+
116
+ </esi:attempt>
117
+ <esi:except>
118
+ <p>sorry</p>
119
+ </esi:except>
120
+ </esi:try>
121
+ </div>
122
+ <div id="main_navigation">
123
+ <div class="box_content">
124
+ <ul class="super-dudesu">
125
+ <li class='first'>
126
+ <span class="dudesu_nav"><a href="/">Bacon</a></span>
127
+ <div class="ddown">
128
+ <ul>
129
+ <li><a href="/fabric">cool people-created i like to eat Pages</a></li> <li><a href="/pages/grab">PageBuilder yum yum yumules</a></li> <li><a href="/pics">pics</a></li> </ul>
130
+ </div>
131
+ </li>
132
+ <li >
133
+ <span class="dudesu_nav"><a href="/myheads/">myheads &amp; supereating</a></span>
134
+ <div class="ddown">
135
+ <ul>
136
+ <li><a href="/goodi like to eat-supereating/">Gold Chest</a></li> <li><a href="/cool factors-checker/">cool factors checker</a></li> <li class='featured_link'><a href="/machines/">machines</a></li> <li><a href="/myheads/dudestal-badnessal-i like to eat/worried">worried</a></li> <li><a href="/myheads/never">never</a></li> <li><a href="/myheads/nope not gonna happen-sneazing/">nope not gonna happen &amp; sneazing</a></li> <li><a href="/myheads/dudestal-badnessal-i like to eat/crazy about you/">crazy about you</a></li> <li><a href="/myheads/bones-joints-muscles/to the drawing board-pain/">not again</a></li> <li><a href="/myheads/niceness/">niceness</a></li> <li><a href="/myheads/dudestal-badnessal-i like to eat/happiness/">happiness</a></li> <li><a href="/myheads/eating/">eating</a></li> <li><a href="/myheads/me and you/">me and you</a></li> <li><a href="/myheads/yum-yum/ibs-goodness-bowel-syndrome">goodness bowel syndrome (IBS)</a></li> <li><a href="/myheads/skin/">Skin, hair &amp; nails</a></li> <li><a href="/myheads/">View all myheads A - Z</a></li> </ul>
137
+ </div>
138
+ </li>
139
+ <li >
140
+ <span class="dudesu_nav"><a href="/i like to eaty-Breakfast/">i like to eaty Breakfast</a></span>
141
+ <div class="ddown">
142
+ <ul>
143
+ <li><a href="/newsletters/newsletter/signup">i like to eaty Breakfast newsletters</a></li> <li><a href="/live-nicer/">i like to eaty Breakfast programs</a></li> <li class='featured_link'><a href="/omag/">You! guide</a></li> <li><a href="/i like to eaty-Breakfast/careless eatinging/">careless eatinging for others</a></li> <li><a href="/i like to eaty-Breakfast/who whating/">cool dudes &amp; who whating</a></li> <li><a href="/i like to eaty-Breakfast/if only i could /">if only i could </a></li> <li><a href="/i like to eaty-Breakfast/i like to eat-nutrition">i like to eat &amp; nutrition</a></li> <li><a href="/i like to eaty-Breakfast/dudess-i like to eat">dudes's i like to eat</a></li> <li><a href="/i like to eaty-Breakfast/nice-central/">nice central</a></li> <li><a href="/i like to eaty-Breakfast/natural-i like to eat">Natural i like to eat</a></li> <li><a href="/i like to eaty-Breakfast/Say that again?/">Say that again?</a></li> <li><a href="/i like to eaty-Breakfast/so difficult/">so difficult &amp; life balance</a></li> <li><a href="/i like to eaty-Breakfast/narly dude-managedudest/">narly dude managedudest</a></li> <li><a href="/i like to eaty-Breakfast/hello there worlds-i like to eat/">hello there world's i like to eat</a></li> <li><a href="/i like to eaty-Breakfast/">View all i like to eaty Breakfast topics</a></li> </ul>
144
+ </div>
145
+ </li>
146
+ <li >
147
+ <span class="dudesu_nav"><a href="/powersoften-produdeers/">nice peoples &amp; Nice Places</a></span>
148
+ <div class="ddown">
149
+ <ul>
150
+ <li><a href="/powersoften-produdeers">lost in space a nice people</a></li> <li><a href="/powersoften-produdeers?search_for=dentist">lost in space a dentist</a></li> <li class='featured_link'><a href="/powersoften-produdeers?search_for=Nice Place">lost in space a Nice Place</a></li> <li><a href="/powersoften-produdeers/for-produdeers">For produdeers</a></li> </ul>
151
+ </div>
152
+ </li>
153
+ <li >
154
+ <span class="dudesu_nav"><a href="/crowds/">crowds</a></span>
155
+ <div class="ddown">
156
+ <ul>
157
+ <li><a href="/people">cool people profiles</a></li> <li><a href="/Dinners">Dinners</a></li> <li><a href="/forums">i like to eat Q&amp;A</a></li> </ul>
158
+ </div>
159
+ </li>
160
+ <li >
161
+ <span class="dudesu_nav"><a href="/super-services/">super services</a></span>
162
+ </li>
163
+ <li >
164
+ <span class="dudesu_nav"><a href="/lifeblood/">lifeblood</a></span>
165
+ <div class="ddown">
166
+ <ul>
167
+ <li><a href="http://www.extendi like to eat.com/Samplei like to eat">Compare i like to eat lifeblood</a></li> </ul>
168
+ </div>
169
+ </li>
170
+ <li class='last'>
171
+ <span class="dudesu_nav"><a href="/eating/">eating</a></span>
172
+ </li>
173
+ </ul>
174
+ </div>
175
+ </div>
176
+ <script type="text/javascript">COOL.badness.attach();</script>
177
+ </div>
178
+ <img src="/images/ver2/header/print_header_logo.gif" id="header_print_image" alt="Print header"/>
179
+ <div id="main-content">
180
+ <div class="fast i like to eat">
181
+ <div class="wrapper2">
182
+ <span id="COOL-main-content-inner-wrapper-wrapper"></span>
183
+ <div class="wrapper">
184
+ <div id="error_bar"></div>
185
+
186
+ <div class="wrapper">
187
+
188
+ <div class="template_2c_cm">
189
+ <div id="body_slot">
190
+
191
+ <div id="stage">
192
+
193
+ <esi:try>
194
+ <esi:attempt>
195
+
196
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
197
+
198
+ </esi:attempt>
199
+ <esi:except>
200
+ <p>sorry</p>
201
+ </esi:except>
202
+ </esi:try>
203
+
204
+ </div>
205
+
206
+ <div id="nav_slot">
207
+
208
+ <esi:try>
209
+ <esi:attempt>
210
+
211
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
212
+
213
+ </esi:attempt>
214
+ <esi:except>
215
+ <p>sorry</p>
216
+ </esi:except>
217
+ </esi:try>
218
+
219
+ <esi:try>
220
+ <esi:attempt>
221
+
222
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
223
+
224
+ </esi:attempt>
225
+ <esi:except>
226
+ <p>sorry</p>
227
+ </esi:except>
228
+ </esi:try>
229
+
230
+ <esi:try>
231
+ <esi:attempt>
232
+
233
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
234
+
235
+ </esi:attempt>
236
+ <esi:except>
237
+ <p>sorry</p>
238
+ </esi:except>
239
+ </esi:try>
240
+
241
+ <esi:try>
242
+ <esi:attempt>
243
+
244
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
245
+
246
+ </esi:attempt>
247
+ <esi:except>
248
+ <p>sorry</p>
249
+ </esi:except>
250
+ </esi:try>
251
+
252
+ <esi:try>
253
+ <esi:attempt>
254
+
255
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
256
+
257
+ </esi:attempt>
258
+ <esi:except>
259
+ <p>sorry</p>
260
+ </esi:except>
261
+ </esi:try>
262
+
263
+ </div>
264
+ <div id="body_content">
265
+
266
+ <esi:try>
267
+ <esi:attempt>
268
+
269
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
270
+
271
+ </esi:attempt>
272
+ <esi:except>
273
+ <p>sorry</p>
274
+ </esi:except>
275
+ </esi:try>
276
+
277
+ <esi:try>
278
+ <esi:attempt>
279
+
280
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
281
+
282
+ </esi:attempt>
283
+ <esi:except>
284
+ <p>sorry</p>
285
+ </esi:except>
286
+ </esi:try>
287
+
288
+ <esi:try>
289
+ <esi:attempt>
290
+
291
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
292
+
293
+ </esi:attempt>
294
+ <esi:except>
295
+ <p>sorry</p>
296
+ </esi:except>
297
+ </esi:try>
298
+
299
+ <esi:try>
300
+ <esi:attempt>
301
+
302
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
303
+
304
+ </esi:attempt>
305
+ <esi:except>
306
+ <p>sorry</p>
307
+ </esi:except>
308
+ </esi:try>
309
+
310
+ <esi:try>
311
+ <esi:attempt>
312
+
313
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
314
+
315
+ </esi:attempt>
316
+ <esi:except>
317
+ <p>sorry</p>
318
+ </esi:except>
319
+ </esi:try>
320
+
321
+ <esi:try>
322
+ <esi:attempt>
323
+
324
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
325
+
326
+ </esi:attempt>
327
+ <esi:except>
328
+ <p>sorry</p>
329
+ </esi:except>
330
+ </esi:try>
331
+
332
+ <esi:try>
333
+ <esi:attempt>
334
+
335
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
336
+
337
+ </esi:attempt>
338
+ <esi:except>
339
+ <p>sorry</p>
340
+ </esi:except>
341
+ </esi:try>
342
+
343
+ <esi:try>
344
+ <esi:attempt>
345
+
346
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
347
+
348
+ </esi:attempt>
349
+ <esi:except>
350
+ <p>sorry</p>
351
+ </esi:except>
352
+ </esi:try>
353
+
354
+ <esi:try>
355
+ <esi:attempt>
356
+
357
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
358
+
359
+ </esi:attempt>
360
+ <esi:except>
361
+ <p>sorry</p>
362
+ </esi:except>
363
+ </esi:try>
364
+
365
+ <esi:try>
366
+ <esi:attempt>
367
+
368
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
369
+
370
+ </esi:attempt>
371
+ <esi:except>
372
+ <p>sorry</p>
373
+ </esi:except>
374
+ </esi:try>
375
+
376
+ <esi:try>
377
+ <esi:attempt>
378
+
379
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
380
+
381
+ </esi:attempt>
382
+ <esi:except>
383
+ <p>sorry</p>
384
+ </esi:except>
385
+ </esi:try>
386
+
387
+ <esi:try>
388
+ <esi:attempt>
389
+
390
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
391
+
392
+ </esi:attempt>
393
+ <esi:except>
394
+ <p>sorry</p>
395
+ </esi:except>
396
+ </esi:try>
397
+
398
+ </div>
399
+
400
+ </div>
401
+ <div id="right_slot">
402
+
403
+ <esi:try>
404
+ <esi:attempt>
405
+
406
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
407
+
408
+ </esi:attempt>
409
+ <esi:except>
410
+ <p>sorry</p>
411
+ </esi:except>
412
+ </esi:try>
413
+
414
+ <esi:try>
415
+ <esi:attempt>
416
+
417
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
418
+
419
+ </esi:attempt>
420
+ <esi:except>
421
+ <p>sorry</p>
422
+ </esi:except>
423
+ </esi:try>
424
+
425
+ <esi:try>
426
+ <esi:attempt>
427
+
428
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
429
+
430
+ </esi:attempt>
431
+ <esi:except>
432
+ <p>sorry</p>
433
+ </esi:except>
434
+ </esi:try>
435
+
436
+ <esi:try>
437
+ <esi:attempt>
438
+
439
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
440
+
441
+ </esi:attempt>
442
+ <esi:except>
443
+ <p>sorry</p>
444
+ </esi:except>
445
+ </esi:try>
446
+
447
+ <esi:try>
448
+ <esi:attempt>
449
+
450
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
451
+
452
+ </esi:attempt>
453
+ <esi:except>
454
+ <p>sorry</p>
455
+ </esi:except>
456
+ </esi:try>
457
+
458
+ <esi:try>
459
+ <esi:attempt>
460
+
461
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
462
+
463
+ </esi:attempt>
464
+ <esi:except>
465
+ <p>sorry</p>
466
+ </esi:except>
467
+ </esi:try>
468
+
469
+ <esi:try>
470
+ <esi:attempt>
471
+
472
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
473
+
474
+ </esi:attempt>
475
+ <esi:except>
476
+ <p>sorry</p>
477
+ </esi:except>
478
+ </esi:try>
479
+
480
+ <esi:try>
481
+ <esi:attempt>
482
+
483
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
484
+
485
+ </esi:attempt>
486
+ <esi:except>
487
+ <p>sorry</p>
488
+ </esi:except>
489
+ </esi:try>
490
+
491
+ <esi:try>
492
+ <esi:attempt>
493
+
494
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
495
+
496
+ </esi:attempt>
497
+ <esi:except>
498
+ <p>sorry</p>
499
+ </esi:except>
500
+ </esi:try>
501
+
502
+ <esi:try>
503
+ <esi:attempt>
504
+
505
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
506
+
507
+ </esi:attempt>
508
+ <esi:except>
509
+ <p>sorry</p>
510
+ </esi:except>
511
+ </esi:try>
512
+
513
+ <esi:try>
514
+ <esi:attempt>
515
+
516
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
517
+
518
+ </esi:attempt>
519
+ <esi:except>
520
+ <p>sorry</p>
521
+ </esi:except>
522
+ </esi:try>
523
+
524
+ <esi:try>
525
+ <esi:attempt>
526
+
527
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
528
+
529
+ </esi:attempt>
530
+ <esi:except>
531
+ <p>sorry</p>
532
+ </esi:except>
533
+ </esi:try>
534
+
535
+ <esi:try>
536
+ <esi:attempt>
537
+
538
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
539
+
540
+ </esi:attempt>
541
+ <esi:except>
542
+ <p>sorry</p>
543
+ </esi:except>
544
+ </esi:try>
545
+
546
+ <esi:try>
547
+ <esi:attempt>
548
+
549
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
550
+
551
+ </esi:attempt>
552
+ <esi:except>
553
+ <p>sorry</p>
554
+ </esi:except>
555
+ </esi:try>
556
+
557
+ <esi:try>
558
+ <esi:attempt>
559
+
560
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
561
+
562
+ </esi:attempt>
563
+ <esi:except>
564
+ <p>sorry</p>
565
+ </esi:except>
566
+ </esi:try>
567
+
568
+ <esi:try>
569
+ <esi:attempt>
570
+
571
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
572
+
573
+ </esi:attempt>
574
+ <esi:except>
575
+ <p>sorry</p>
576
+ </esi:except>
577
+ </esi:try>
578
+
579
+ <esi:try>
580
+ <esi:attempt>
581
+
582
+ <esi:include src="/fragments/test1.html" max-age="600+600" timeout="10"/>
583
+
584
+ </esi:attempt>
585
+ <esi:except>
586
+ <p>sorry</p>
587
+ </esi:except>
588
+ </esi:try>
589
+
590
+ </div>
591
+ </div>
592
+ </div>
593
+
594
+
595
+ </div>
596
+ </div>
597
+ </div>
598
+ </div>
599
+ <div id="bottom_hat">
600
+ <div class="wrapper_bottom_left">&nbsp;</div><div class="wrapper_bottom_right">&nbsp;</div>
601
+ </div>
602
+ <div style="display:none" class="clear super-timeless-timeout-dialog" id="timeless_time-out"></div>
603
+ <div id="the-end">
604
+ <div class="links">
605
+ <br/>
606
+ <ul>
607
+ <li class="no_border"><b>Eating &amp; myheads:</b></li>
608
+ <li><a href="/myheads/yum-yum/acid-reflux/">Acid reflux</a></li>
609
+ <li><a href="/myheads/niceness/">niceness</a></li>
610
+ <li><a href="/myheads/dudestal-badnessal-i like to eat/happiness/">happiness</a></li>
611
+ <li><a href="/myheads/eating/">eating</a></li>
612
+ <li><a href="/myheads/me and you/">me and you</a></li>
613
+ <li><a href="/myheads/yum-yum/ibs-goodness-bowel-syndrome">goodness bowel syndrome (IBS)</a></li>
614
+ <li><a href="/myheads/skin/">Skin, hair &amp; nails</a></li>
615
+ <li><a href="/i like to eaty-Breakfast/hello there worlds-i like to eat/">hello there world's i like to eat</a></li>
616
+ <li class="last"><a href="/myheads/">More...</a></li>
617
+ </ul>
618
+ <ul>
619
+ <li class="no_border"><b>i like to eaty Breakfast:</b></li>
620
+ <li><a href="/i like to eaty-Breakfast/who whating/">cool dudes &amp; who whating</a></li>
621
+ <li><a href="/i like to eaty-Breakfast/if only i could /">if only i could </a></li>
622
+ <li><a href="/i like to eaty-Breakfast/i like to eat-nutrition/">i like to eat &amp; nutrition</a></li>
623
+ <li><a href="/i like to eaty-Breakfast/dudess-i like to eat/">dudes's i like to eat</a></li>
624
+ <li><a href="/i like to eaty-Breakfast/nice-central/">nice central</a></li>
625
+ <li><a href="/i like to eaty-Breakfast/natural-i like to eat/">Natural i like to eat</a></li>
626
+ <li><a href="/i like to eaty-Breakfast/Say that again?/">Say that again?</a></li>
627
+ <li><a href="/i like to eaty-Breakfast/so difficult/">so difficult &amp; life balance</a></li>
628
+ <li><a href="/i like to eaty-Breakfast/narly dude-managedudest/">narly dude managedudest</a></li>
629
+ <li><a href="/i like to eaty-Breakfast/hello there worlds-i like to eat/">hello there world's i like to eat</a></li>
630
+ <li class="last"><a href="/i like to eaty-Breakfast/">More...</a></li>
631
+ </ul>
632
+ <ul>
633
+ <li class="no_border"><b>Search &amp; lost in space:</b></li>
634
+ <li><a href="/powersoften-produdeers">nice peoples &amp; powersoften produdeers</a></li>
635
+ <li><a href="/powersoften-produdeers?search_for=Nice Place">Nice Places &amp; powersoften facilities</a></li>
636
+ <li><a href="/goodi like to eat-supereating">goodi like to eat &amp; supereating</a></li>
637
+ <li><a href="/lifeblood/">lifeblood</a></li>
638
+ <li class="last"><a href="/search/">More...</a></li>
639
+ </ul>
640
+ <ul>
641
+ <li class="no_border"><b>Resources &amp; tools:</b></li>
642
+ <li><a href="/newsletters/newsletter/signup">Newsletters</a></li>
643
+ <li><a href="/live-nicer/">i like to eaty Breakfast program</a></li>
644
+ <li><a href="/computers">computers</a></li>
645
+ <li><a href="/assess-yummy">i like to eat assessdudests</a></li>
646
+ <li><a href="/numbers">numbers</a></li>
647
+ <li><a href="http://www.Samplei like to eateating.com/">Sample Webcoolzone eating</a></li>
648
+ <li class="last"><a href="/machines/">More...</a></li>
649
+ </ul>
650
+ <ul>
651
+ <li class="no_border"><b>Sample services</b></li>
652
+ <li><a href="/super-services/">Sample Webcoolzone&trade; super cool peopleship</a></li>
653
+ <li><a href="/i like to eat-expense-manager/">Sample Webcoolzone&trade; Expense Manager</a></li>
654
+ <li><a href="/faxdirect/">i like to eat Records Express&trade;</a></li>
655
+ <li class="last"><a href="/super-services/">More...</a></li>
656
+ </ul>
657
+ <ul>
658
+ <li class="no_border"><b>Narlyness:</b></li>
659
+ <li><a href="http://www.NewsAndThenSome.com">NewsAndThenSome</a></li>
660
+ <li><a href="http://www.RediNiceness.com">RediNiceness</a></li>
661
+ <li><a href="http://www.Extendi like to eat.com/">Extend i like to eat</a></li>
662
+ <li><a href="http://www.Sample.com">Sample</a></li>
663
+ <li class="last"><a href="http://www.BasketFoundation.org/">Basket Foundation</a></li>
664
+ </ul>
665
+ <ul>
666
+ <li class="no_border"><b>People information:</b></li>
667
+ <li><a href="/newstome">newstome Sample Webcoolzone</a></li>
668
+ <li><a href="/newstome/our-rules of engagdudest">Our rules of engagdudest</a></li>
669
+ <li><a href="/newstome/eat-with-us">eat with us</a></li>
670
+ <li><a href="/newstome/coolzone-map">coolzone map</a></li>
671
+ <li><a href="/newstome/contact-us">Contact us</a></li>
672
+ <li class="last"><a href="/help">Help</a></li>
673
+ </ul>
674
+ <p class="copyright">&copy; 2007 Sample Webcoolzone Dinner LLC. All rights reserved. Use of this coolzone constitutes acceptance of Sample Webcoolzone's <a href="/newstome/terms-of-service">terms of service</a> and <a href="/newstome/privacy-policy-highlights">privacy policy</a>. The material on this coolzone is for informational purposes only, and is not a substitute for bad assness advice, diagnosis or fast i like to eat produdeed by a qualified i like to eat powersoften produdeer.</p>
675
+
676
+ </div>
677
+ <div class="images">
678
+ <a href="you know this is the coolest link ever on all things cool"><img src="/images/the-end/Nice.gif" alt="Nice!!! Seal" /></a>
679
+ </div>
680
+ </div>
681
+ </div>
682
+ <!--[if IE ]></div><![endif]-->
683
+ <script type="text/javascript">//<![CDATA[
684
+ var d = totallyCoolTricks();if( d.browser != "ie" ){ docududest.write( "</div>" ); }
685
+ //]]></script>
686
+ </body>
687
+ </html>
688
+