[doc] Move and link to example from component_manifests.md

The //src/sys/examples/topology example is ideal for demonstrating
capability routing. It now lives under //examples alongside the other
component examples.

Bug: CF-627 #done

Change-Id: I3278061b5e131c6bd4f633c80af1174219f967e2
diff --git a/docs/the-book/components/component_manifests.md b/docs/the-book/components/component_manifests.md
index 99e14f6..26dff7e 100644
--- a/docs/the-book/components/component_manifests.md
+++ b/docs/the-book/components/component_manifests.md
@@ -115,7 +115,7 @@
   the path by which the capability is being `offered` or `exposed` to another
   component.
 
-#### Example
+#### Examples
 
 For an example of how these keywords interact, consider the following component
 instance tree:
@@ -139,6 +139,9 @@
 - *echo_tool* uses `/svc/echo`. When `echo_tool` runs, it will find `/svc/echo`
   in its namespace.
 
+A working example of capability routing can be found at
+[//examples/components/routing](/examples/components/routing).
+
 ### Facet metadata
 
 *Facets* are metadata that is ignored by the component framework itself, but may
diff --git a/examples/BUILD.gn b/examples/BUILD.gn
index 017963f..c8ee62b 100644
--- a/examples/BUILD.gn
+++ b/examples/BUILD.gn
@@ -11,6 +11,8 @@
     "hello_world",
     "media",
     "speech",
+    "//examples/components/basic:components_basic_example",
+    "//examples/components/routing:components_routing_example",
   ]
 }
 
diff --git a/garnet/examples/components/v2/BUILD.gn b/examples/components/basic/BUILD.gn
similarity index 81%
rename from garnet/examples/components/v2/BUILD.gn
rename to examples/components/basic/BUILD.gn
index 003ef0c..a66099e 100644
--- a/garnet/examples/components/v2/BUILD.gn
+++ b/examples/components/basic/BUILD.gn
@@ -23,23 +23,13 @@
   edition = "2018"
 }
 
-deprecated_fuchsia_component("echo_args_component") {
-  manifest = rebase_path("meta/echo_args.cml")
-  deps = [
-    ":echo_args_bin",
-  ]
-
-  binary = "echo_args"
-}
-
-package("hello_world_hippo") {
+package("components_basic_example") {
   deps = [
     ":hello_world_bin",
     ":ls_root_pkg_bin",
+    ":echo_args_bin",
   ]
 
-  components = [ ":echo_args_component" ]
-
   binaries = [
     {
       name = "hello_world"
@@ -47,6 +37,9 @@
     {
       name = "ls_root_pkg"
     },
+    {
+      name = "echo_args"
+    },
   ]
 
   meta = [
@@ -58,5 +51,9 @@
       path = rebase_path("meta/ls_root_pkg.cml")
       dest = "ls_root_pkg.cm"
     },
+    {
+      path = rebase_path("meta/echo_args.cml")
+      dest = "echo_args.cm"
+    },
   ]
 }
diff --git a/garnet/examples/components/v2/meta/echo_args.cml b/examples/components/basic/meta/echo_args.cml
similarity index 100%
rename from garnet/examples/components/v2/meta/echo_args.cml
rename to examples/components/basic/meta/echo_args.cml
diff --git a/garnet/examples/components/v2/meta/hello_world.cml b/examples/components/basic/meta/hello_world.cml
similarity index 100%
rename from garnet/examples/components/v2/meta/hello_world.cml
rename to examples/components/basic/meta/hello_world.cml
diff --git a/garnet/examples/components/v2/meta/ls_root_pkg.cml b/examples/components/basic/meta/ls_root_pkg.cml
similarity index 100%
rename from garnet/examples/components/v2/meta/ls_root_pkg.cml
rename to examples/components/basic/meta/ls_root_pkg.cml
diff --git a/garnet/examples/components/v2/src/echo_args.rs b/examples/components/basic/src/echo_args.rs
similarity index 100%
rename from garnet/examples/components/v2/src/echo_args.rs
rename to examples/components/basic/src/echo_args.rs
diff --git a/garnet/examples/components/v2/src/hello_world.rs b/examples/components/basic/src/hello_world.rs
similarity index 100%
rename from garnet/examples/components/v2/src/hello_world.rs
rename to examples/components/basic/src/hello_world.rs
diff --git a/garnet/examples/components/v2/src/ls_root_pkg.rs b/examples/components/basic/src/ls_root_pkg.rs
similarity index 100%
rename from garnet/examples/components/v2/src/ls_root_pkg.rs
rename to examples/components/basic/src/ls_root_pkg.rs
diff --git a/examples/components/routing/BUILD.gn b/examples/components/routing/BUILD.gn
new file mode 100644
index 0000000..2cee1fb
--- /dev/null
+++ b/examples/components/routing/BUILD.gn
@@ -0,0 +1,34 @@
+# Copyright 2019 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//build/package.gni")
+
+package("components_routing_example") {
+  deps = [
+    "//examples/components/routing/echo_server",
+    "//examples/components/routing/echo_client",
+  ]
+  binaries = [
+    {
+      name = "echo_server"
+    },
+    {
+      name = "echo_client"
+    },
+  ]
+  meta = [
+    {
+      path = rebase_path("meta/echo_server.cml")
+      dest = "echo_server.cm"
+    },
+    {
+      path = rebase_path("meta/echo_client.cml")
+      dest = "echo_client.cm"
+    },
+    {
+      path = rebase_path("meta/echo_realm.cml")
+      dest = "echo_realm.cm"
+    },
+  ]
+}
diff --git a/src/sys/examples/topology/echo_client/BUILD.gn b/examples/components/routing/echo_client/BUILD.gn
similarity index 89%
rename from src/sys/examples/topology/echo_client/BUILD.gn
rename to examples/components/routing/echo_client/BUILD.gn
index aa05ea3..d3cbb95 100644
--- a/src/sys/examples/topology/echo_client/BUILD.gn
+++ b/examples/components/routing/echo_client/BUILD.gn
@@ -9,7 +9,7 @@
   deps = [
     "//garnet/public/rust/fuchsia-async",
     "//garnet/public/rust/fuchsia-component",
-    "//src/sys/examples/topology/fidl:echo-rustc",
+    "//examples/components/routing/fidl:echo-rustc",
     "//third_party/rust_crates:failure",
     "//third_party/rust_crates:futures-preview",
   ]
diff --git a/src/sys/examples/topology/echo_client/src/main.rs b/examples/components/routing/echo_client/src/main.rs
similarity index 89%
rename from src/sys/examples/topology/echo_client/src/main.rs
rename to examples/components/routing/echo_client/src/main.rs
index e10db92..35d12b1 100644
--- a/src/sys/examples/topology/echo_client/src/main.rs
+++ b/examples/components/routing/echo_client/src/main.rs
@@ -6,7 +6,7 @@
 
 use {
     failure::{format_err, Error, ResultExt},
-    fidl_fidl_examples_topology_echo as fecho, fuchsia_async as fasync,
+    fidl_fidl_examples_routing_echo as fecho, fuchsia_async as fasync,
     fuchsia_component::client::connect_to_service,
 };
 
diff --git a/src/sys/examples/topology/echo_server/BUILD.gn b/examples/components/routing/echo_server/BUILD.gn
similarity index 89%
rename from src/sys/examples/topology/echo_server/BUILD.gn
rename to examples/components/routing/echo_server/BUILD.gn
index 1e11cf4..a258c87 100644
--- a/src/sys/examples/topology/echo_server/BUILD.gn
+++ b/examples/components/routing/echo_server/BUILD.gn
@@ -10,7 +10,7 @@
     "//garnet/public/lib/fidl/rust/fidl",
     "//garnet/public/rust/fuchsia-async",
     "//garnet/public/rust/fuchsia-component",
-    "//src/sys/examples/topology/fidl:echo-rustc",
+    "//examples/components/routing/fidl:echo-rustc",
     "//third_party/rust_crates:failure",
     "//third_party/rust_crates:futures-preview",
   ]
diff --git a/src/sys/examples/topology/echo_server/src/main.rs b/examples/components/routing/echo_server/src/main.rs
similarity index 93%
rename from src/sys/examples/topology/echo_server/src/main.rs
rename to examples/components/routing/echo_server/src/main.rs
index 1e86443..7dc16c0 100644
--- a/src/sys/examples/topology/echo_server/src/main.rs
+++ b/examples/components/routing/echo_server/src/main.rs
@@ -6,7 +6,7 @@
 
 use {
     failure::{Error, ResultExt},
-    fidl_fidl_examples_topology_echo as fecho, fuchsia_async as fasync,
+    fidl_fidl_examples_routing_echo as fecho, fuchsia_async as fasync,
     fuchsia_component::server::ServiceFs,
     futures::{StreamExt, TryStreamExt},
 };
diff --git a/src/sys/examples/topology/fidl/BUILD.gn b/examples/components/routing/fidl/BUILD.gn
similarity index 86%
rename from src/sys/examples/topology/fidl/BUILD.gn
rename to examples/components/routing/fidl/BUILD.gn
index 909ca95..0d267a6 100644
--- a/src/sys/examples/topology/fidl/BUILD.gn
+++ b/examples/components/routing/fidl/BUILD.gn
@@ -5,7 +5,7 @@
 import("//build/fidl/fidl.gni")
 
 fidl("echo") {
-  name = "fidl.examples.topology.echo"
+  name = "fidl.examples.routing.echo"
 
   sources = [
     "echo.fidl",
diff --git a/src/sys/examples/topology/fidl/echo.fidl b/examples/components/routing/fidl/echo.fidl
similarity index 87%
rename from src/sys/examples/topology/fidl/echo.fidl
rename to examples/components/routing/fidl/echo.fidl
index 3dcd2de..f1b841f 100644
--- a/src/sys/examples/topology/fidl/echo.fidl
+++ b/examples/components/routing/fidl/echo.fidl
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library fidl.examples.topology.echo;
+library fidl.examples.routing.echo;
 
 [Discoverable]
 protocol Echo {
diff --git a/src/sys/examples/topology/meta/echo_client.cml b/examples/components/routing/meta/echo_client.cml
similarity index 76%
rename from src/sys/examples/topology/meta/echo_client.cml
rename to examples/components/routing/meta/echo_client.cml
index 4329f53..fa9f88c 100644
--- a/src/sys/examples/topology/meta/echo_client.cml
+++ b/examples/components/routing/meta/echo_client.cml
@@ -6,7 +6,7 @@
     },
     "use": [
         {
-            "service": "/svc/fidl.examples.topology.echo.Echo",
+            "service": "/svc/fidl.examples.routing.echo.Echo",
         },
     ],
 }
diff --git a/src/sys/examples/topology/meta/echo_realm.cml b/examples/components/routing/meta/echo_realm.cml
similarity index 72%
rename from src/sys/examples/topology/meta/echo_realm.cml
rename to examples/components/routing/meta/echo_realm.cml
index 4cf49ea..a07d9ed 100644
--- a/src/sys/examples/topology/meta/echo_realm.cml
+++ b/examples/components/routing/meta/echo_realm.cml
@@ -3,7 +3,7 @@
     // Route Echo service from server to client.
     "offer": [
         {
-            "service": "/svc/fidl.examples.topology.echo.Echo",
+            "service": "/svc/fidl.examples.routing.echo.Echo",
             "from": "#echo_server",
             "to": [
                 {
@@ -17,11 +17,11 @@
     "children": [
         {
             "name": "echo_server",
-            "url": "fuchsia-pkg://fuchsia.com/topology_example#meta/echo_server.cm",
+            "url": "fuchsia-pkg://fuchsia.com/routing_example#meta/echo_server.cm",
         },
         {
             "name": "echo_client",
-            "url": "fuchsia-pkg://fuchsia.com/topology_example#meta/echo_client.cm",
+            "url": "fuchsia-pkg://fuchsia.com/routing_example#meta/echo_client.cm",
             "startup": "eager",
         },
     ],
diff --git a/src/sys/examples/topology/meta/echo_server.cml b/examples/components/routing/meta/echo_server.cml
similarity index 79%
rename from src/sys/examples/topology/meta/echo_server.cml
rename to examples/components/routing/meta/echo_server.cml
index 759a553..f92df21 100644
--- a/src/sys/examples/topology/meta/echo_server.cml
+++ b/examples/components/routing/meta/echo_server.cml
@@ -6,7 +6,7 @@
     },
     "expose": [
         {
-            "service": "/svc/fidl.examples.topology.echo.Echo",
+            "service": "/svc/fidl.examples.routing.echo.Echo",
             "from": "self",
         },
     ],
diff --git a/garnet/packages/examples/BUILD.gn b/garnet/packages/examples/BUILD.gn
index 6ebaf39..dcfb3de 100644
--- a/garnet/packages/examples/BUILD.gn
+++ b/garnet/packages/examples/BUILD.gn
@@ -11,8 +11,6 @@
     "//garnet/bin/glob",
     "//garnet/examples/components:component_hello_world",
     "//garnet/examples/components:component_hello_world_tests",
-    "//garnet/examples/components/v2:hello_world_hippo",
-    "//src/sys/examples/topology:topology_example",
   ]
 }
 
diff --git a/src/sys/component_manager/BUILD.gn b/src/sys/component_manager/BUILD.gn
index 1fb09c4..f6938d1 100644
--- a/src/sys/component_manager/BUILD.gn
+++ b/src/sys/component_manager/BUILD.gn
@@ -91,7 +91,7 @@
 test_package("component_manager_tests") {
   deps = [
     ":lib",
-    "//garnet/examples/components/v2:hello_world_bin",
+    "//examples/components/basic:hello_world_bin",
   ]
 
   components =
diff --git a/src/sys/component_manager/tests/BUILD.gn b/src/sys/component_manager/tests/BUILD.gn
index 927d0a9..3bcb11b 100644
--- a/src/sys/component_manager/tests/BUILD.gn
+++ b/src/sys/component_manager/tests/BUILD.gn
@@ -43,35 +43,47 @@
   ]
 }
 
-deprecated_fuchsia_component("echo_realm") {
-  manifest = rebase_path("meta/echo_realm.cml")
-}
-
 test_package("routing_integration_test") {
   deps = [
     ":mock_pkg_resolver_bin",
     ":routing_integration_test_bin",
+    "//examples/components/routing/echo_server",
+    "//examples/components/routing/echo_client",
   ]
 
   components = [
-    ":echo_realm",
     "//src/sys/component_manager:component_manager_as_v1_component",
-    "//src/sys/examples/topology:echo_server",
-    "//src/sys/examples/topology:echo_client",
   ]
 
   meta = [
     {
-      path =
-          rebase_path("meta/mock_pkg_resolver_for_routing_integration_test.cmx")
+      path = rebase_path("meta/mock_pkg_resolver_for_routing_integration_test.cmx")
       dest = "mock_pkg_resolver.cmx"
     },
+    {
+      path = rebase_path("//examples/components/routing/meta/echo_server.cml")
+      dest = "echo_server.cm"
+    },
+    {
+      path = rebase_path("//examples/components/routing/meta/echo_client.cml")
+      dest = "echo_client.cm"
+    },
+    {
+      path = rebase_path("meta/echo_realm.cml")
+      dest = "echo_realm.cm"
+    },
   ]
 
   binaries = [
     {
       name = "mock_pkg_resolver"
     },
+    {
+      name = "echo_server"
+    },
+    {
+      name = "echo_client"
+    },
   ]
 
   tests = [
@@ -102,11 +114,10 @@
   deps = [
     ":elf_runner_test_bin",
     ":mock_pkg_resolver_bin",
-    "//garnet/examples/components/v2:echo_args_bin",
+    "//examples/components/basic:echo_args_bin",
   ]
 
   components = [
-    "//garnet/examples/components/v2:echo_args_component",
     "//src/sys/component_manager:component_manager_as_v1_component",
   ]
 
@@ -119,6 +130,10 @@
       path = rebase_path("meta/echo_no_args.cml")
       dest = "echo_no_args.cm"
     },
+    {
+      path = rebase_path("//examples/components/basic/meta/echo_args.cml")
+      dest = "echo_args.cm"
+    },
   ]
 
   binaries = [
diff --git a/src/sys/component_manager/tests/meta/echo_realm.cml b/src/sys/component_manager/tests/meta/echo_realm.cml
index a34b2e8..7bd5c1e 100644
--- a/src/sys/component_manager/tests/meta/echo_realm.cml
+++ b/src/sys/component_manager/tests/meta/echo_realm.cml
@@ -1,11 +1,11 @@
 // Realm for integration test that provisions an Echo client and service and eagerly runs the
-// client. We don't use the topology examples's echo_realm.cml because we need the component URIs
+// client. We don't use the routing examples's echo_realm.cml because we need the component URIs
 // to refer to the test package.
 {
     // Route Echo service from server to client.
     "offer": [
         {
-            "service": "/svc/fidl.examples.topology.echo.Echo",
+            "service": "/svc/fidl.examples.routing.echo.Echo",
             "from": "#echo_server",
             "to": [
                 {
diff --git a/src/sys/dash/BUILD.gn b/src/sys/dash/BUILD.gn
index 37a4186..1bacd47 100644
--- a/src/sys/dash/BUILD.gn
+++ b/src/sys/dash/BUILD.gn
@@ -37,7 +37,7 @@
   deps = [
     ":dash_test_bin",
     ":zircon-bin-manifest",
-    "//garnet/examples/components/v2:hello_world_bin",
+    "//examples/components/basic:hello_world_bin",
     "//src/sys/component_manager/tests:mock_pkg_resolver_bin",
   ]
 
@@ -76,7 +76,7 @@
 package("dash") {
   deps = [
     ":zircon-bin-manifest",
-    "//garnet/examples/components/v2:hello_world_bin",
+    "//examples/components/basic:hello_world_bin",
   ]
 
   components = [ ":dash_component" ]
diff --git a/src/sys/examples/topology/BUILD.gn b/src/sys/examples/topology/BUILD.gn
deleted file mode 100644
index b874c4e..0000000
--- a/src/sys/examples/topology/BUILD.gn
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright 2019 The Fuchsia Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import("//build/package.gni")
-import("//build/package/component.gni")
-
-deprecated_fuchsia_component("echo_server") {
-  manifest = rebase_path("meta/echo_server.cml")
-  deps = [
-    "//src/sys/examples/topology/echo_server",
-  ]
-  binary = "echo_server"
-}
-
-deprecated_fuchsia_component("echo_client") {
-  manifest = rebase_path("meta/echo_client.cml")
-  deps = [
-    "//src/sys/examples/topology/echo_client",
-  ]
-  binary = "echo_client"
-}
-
-deprecated_fuchsia_component("echo_realm") {
-  manifest = rebase_path("meta/echo_realm.cml")
-}
-
-package("topology_example") {
-  components = [
-    ":echo_server",
-    ":echo_client",
-    ":echo_realm",
-  ]
-}