Skip to content

Commit 413ea60

Browse files
committed
minor edits for clarity and typos
1 parent 974d36e commit 413ea60

File tree

1 file changed

+19
-21
lines changed

1 file changed

+19
-21
lines changed

lifecycle.rst

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ effective use of automation. This section introduces an approach to
184184
test automation, but we start by talking about the overall testing
185185
strategy.
186186

187-
The best-practice for testing in the Cloud/DevOps environment is to
187+
The best practice for testing in the Cloud/DevOps environment is to
188188
adopt a *Shift Left* strategy, which introduces tests early in the
189189
development cycle, that is, on the left side of the pipeline shown in
190190
:numref:`Figure %s <fig-pipeline>`. To apply this principle, you first
@@ -311,16 +311,14 @@ switches).
311311

312312
Example Testing Frameworks used in Aether.
313313

314-
Some of the frameworks shown in :numref:`Figure %s
315-
<fig-tests>` were co-developed with the corresponding software
316-
component. This is true of TestVectors and TestON, which put
317-
customized workloads on Stratum (SwitchOS) and ONOS (NetworkOS),
318-
respectively. Both are open source, and hence available to pursue for
319-
insights into the challenges of building a testing framework. In
320-
contrast, NG40 is a proprietary framework for emulating 3GPP-compliant
321-
cellular network traffic, which due to the complexity and value in
322-
demonstrating adherence to the 3GPP standard, is a closed, commercial
323-
product.
314+
Some of the frameworks shown in :numref:`Figure %s <fig-tests>` were
315+
co-developed with the corresponding software component. This is true
316+
of TestVectors and TestON, which put customized workloads on Stratum
317+
(SwitchOS) and ONOS (NetworkOS), respectively. Both are open source,
318+
and hence available to be perused for insights into the challenges of
319+
building a testing framework. In contrast, NG40 is a
320+
close source, proprietary framework for emulating 3GPP-compliant
321+
cellular network traffic.
324322

325323
Selenium and Robot are the most general of the five examples. Each is an
326324
open source project with an active developer community. Selenium is a
@@ -475,7 +473,7 @@ publish a new Docker image, triggered by a change to a ``VERSION``
475473
file stored in the code repo. (We'll see why in Section 4.5.)
476474

477475
As an illustrative example, the following is from a Groovy script that
478-
defines the pipeline for testing the Aether API, which as we'll see in
476+
defines the pipeline for testing the Aether API, which, as we'll see in
479477
the next chapter, is auto-generated by the Runtime Control
480478
subsystem. We're interested in the general form of the pipeline, so
481479
omit most of the details, but it should be clear from the example what
@@ -518,8 +516,8 @@ patch set.
518516

519517
*Aether uses Jenkins as our CI tool, but another popular option is
520518
GitHub Actions. This is a relatively new feature of GitHub (the
521-
cloud service, not the software package) that nicely integrates
522-
the code repo with a set of workflows that can be exectued every
519+
cloud service, not to be confused with the software tool Git). GitHub Actions augment
520+
the code repo with a set of workflows that can be executed every
523521
time a patch is submitted. In this setting, a workflow is roughly
524522
analogous to a Groovy pipeline.*
525523

@@ -560,7 +558,7 @@ Config Repo, which includes both the set of Terraform Templates that
560558
specify the underlying infrastructure (we've been calling this the
561559
cloud platform) and the set of Helm Charts that specify the collection
562560
of microservices (sometimes called applications) that are to be
563-
deployed on that infrastructure. We already know about Terraform from
561+
deployed on that infrastructure. We discussed Terraform in
564562
Chapter 3: it's the agent that actually "acts on" the
565563
infrastructure-related forms. For its counterpart on the application
566564
side Aether uses an open source project called Fleet.
@@ -704,8 +702,8 @@ Our starting point is to adopt the widely-accepted practice of
704702
version number *MAJOR.MINOR.PATCH* (e.g., ``3.2.4``), where the
705703
*MAJOR* version increments whenever you make an incompatible API
706704
change, the *MINOR* version increments when you add functionality in a
707-
backward compatible way, and the *PATCH* corresponds to a backwards
708-
compatible bug fix.
705+
backward-compatible way, and the *PATCH* corresponds to a
706+
backward-compatible bug fix.
709707

710708
.. _reading_semver:
711709
.. admonition:: Further Reading
@@ -731,7 +729,7 @@ the software lifecycle:
731729

732730
* The commit that does correspond to a finalized patch is also tagged
733731
(in the repo) with the corresponding semantic version number. In
734-
git, this tag is bound to a hash that unambiguously identifies the
732+
Git, this tag is bound to a hash that unambiguously identifies the
735733
commit, making it the authoritative way of binding a version number
736734
to a particular instance of the source code.
737735

@@ -797,7 +795,7 @@ chapter.
797795
4.6 Managing Secrets
798796
--------------------
799797

800-
The discussion up this point has glossed over one important detail,
798+
The discussion up to this point has glossed over one important detail,
801799
which is how secrets are managed. These include, for example, the
802800
credentials Terraform needs to access remote services like GCP, as
803801
well as the keys used to secure communication among microservices
@@ -852,7 +850,7 @@ Controller to use its sealing key to help them unlock those secrets.
852850

853851
While this approach is less general than the first (i.e., it is
854852
specific to protecting secrets within a Kubernetes cluster), it has
855-
the advantage of taking humans completely out-of-the-loop, with the
853+
the advantage of taking humans completely out of the loop, with the
856854
sealing key being programmatically generated at runtime. One
857855
complication, however, is that it is generally preferable for that
858856
secret to be written to persistent storage, to protect against having
@@ -898,7 +896,7 @@ with a particular set of use cases in mind, but it is later integrated
898896
with other software to build entirely new cloud apps that have their
899897
own set of abstractions and features, and correspondingly, their own
900898
collection of configuration state. This is true for Aether, where the
901-
SD-Core subsystem was originally implemented for use in global
899+
SD-Core subsystem, for example, was originally implemented for use in global
902900
cellular networks, but is being repurposed to support private 4G/5G in
903901
enterprises.
904902

0 commit comments

Comments
 (0)