рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓рдЧрднрдЧ рд╣рд░ рдХреЛрдИ рдЗрд╕ рд░рд╛рдп рдореЗрдВ рдЖрдпрд╛ рд╣реИ: рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рднреА рдЙрджрд╛рд╣рд░рдг рд╕рд░рд▓ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рджрд┐рдП рдЧрдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ рд╡реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рд╛рд▓ рдХреЗ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдореБрдЭреЗ рдпрд╣ рдзрд╛рд░рдгрд╛ рдорд┐рд▓реА рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рддреБрдЪреНрдЫ рднреАред рдореИрдВрдиреЗ рд╡рд╣реА рдЬрд╛рд░реА рд░рдЦрд╛ рдЬреЛ рдореИрдВрдиреЗ
рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдерд╛ред
рд╣рдо рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ
рдореИрдВ рдЖрдкрдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рдЬрдЯрд┐рд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреНрд╡реЗрд╢реНрдЪрди рд▓рд┐рдЦрдирд╛, рдпрд╣ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ рдХрд┐ SQL рдпрд╛ HQL рдХреНрд╡реЗрд░реАрдЬрд╝ рдиреЗ рд╣рдореЗрд╢рд╛ рдХреБрдЫ рдЖрд╢рдВрдХрд╛ рдкреИрджрд╛ рдХреА рд╣реИред рдХрднреА-рдХрднреА, рдЖрдк рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рдХреНрд╖рдо рдЕрдиреБрд░реЛрдз рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдкрдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рдЪрд╛рд╣рд┐рдП, рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдХреЛрдб рдЪрд▓рд╛рдПрдВ, рдФрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рд╕рдордп рдмрд╛рдж рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдХрд╛ рдРрд╕рд╛ рд╕рдВрдпреЛрдЬрди рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреБрдЫ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдЧрд▓рдд, рдпрд╛ рдХреБрдЫ рд░рд┐рдХреЙрд░реНрдб рдЧрд╛рдпрдм рд╣реИрдВ, рдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рдФрд░ред рдпрд╣ рдЙрди рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдЪ рд╣реИ рдЬрд┐рдирдореЗрдВ рдЖрдкрдХреЛ рдмрд╣реБрдд рд╕реЗ рдмрд╛рд╣рд░реА рдЬреЛрдбрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреБрдЫ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рднреА рд╕рдореВрд╣ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реИ, рдЬреЛ рдпрд╛ рддреЛ рд╡рд╣рд╛рдВ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИред рдЬрдЯрд┐рд▓ рдкреНрд░рд╢реНрдиред рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдХрдИ рдРрд╕реЗ рдереЗ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдлреНрд▓реЗрдХреНрд╕-рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реНрд╕ рдХреЗ рдЬреАрд╡рди рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрдЯрд┐рд▓ рд╢рд╛рдЦрд┐рдд рдбреЗрдЯрд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ред рдЗрд╕ рд╕рд╛рд░реА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░рд╛ рдЬрд╡рд╛рдм? рдмреЗрд╢рдХ рдкрд░реАрдХреНрд╖рдг! рдЗрд╕реА рд╕рдордп, рдореИрдВ рдПрдХ рдЬреАрд╡рд┐рдд рд╡реНрдпрдХреНрддрд┐ рднреА рд╣реВрдВ, рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рджреЛрд╣рд░рд╛рд╡ (рдпрд╛ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ) рдХреЛрдб рдХреЗ рд╕рд╛рде 20 рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рд░реНрд▓рд┐рдкреНрдд рд╣реИ:
public void test() { Application app1 = ApplicationMother.makeApplication(); Version version11 = VersionMother.makeVersion(app1); save(app1, version11); DeploymentMother.makeDeployment(app1); DeploymentMother.makeDeployment(app1);
рдЗрд╕ рдкреАрдбрд╝рд╛ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдпрд╛рдж рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╣реИ, рдЙрддреНрдкрд╛рдж рдХреЛ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдХрдо рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИред рдФрд░ рд╕рднреА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЬреЛ рд╣рдо рджреВрд╕рд░реЗ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ, рдкрд╣рд▓реЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рд╣рдорд╛рд░рд╛ рдорд┐рддреНрд░ рд╣реИред рд╕рдм рдХреБрдЫ рдЬреЛ рджреВрд░рд╕реНрде рд░реВрдк рд╕реЗ рднреА рджреЛрд╣рд░рд╛рддрд╛ рджрд┐рдЦрддрд╛ рд╣реИ рдХреЛрдб рдХреЛ рдирд┐рд░реНрджрдпрддрд╛ рд╕реЗ рд╣реЗрд▓реНрдкрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рд╣реЗрд▓реНрдкрд░ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдо:
public void testDeletedDeploymentsDontCount() { TestData data = app("app 1") .withNonDeletedVersion().deployedTimes(2) .withDeletedVersions(1).deployedTimes(2) .app("app 2") .withNonDeletedVersion().deployedTimes(1); queryAndAssert( data.makeExpectedRow(1, 1, 2), data.makeExpectedRow(1, 2, 0), data.makeExpectedRow(2, 1, 0) );
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреЗрд╣рддрд░ рд╣реИ, рд╣реИ рдирд╛? рдХреЛрдб рдЕрддреБрд▓рдиреАрдп рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХ рдкрдардиреАрдп рд╣реЛ рдЧрдпрд╛ рд╣реИред рдореИрдердб-рдЪреЗрдирд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп (рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдЗрд╕реЗ
рдПрдХреНрд╕рдкреНрд░реЗрд╢рдирдмреНрдпреВрд▓рд░ рдкреИрдЯрд░реНрди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ), рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣рдореЗрд╢рд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реАрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреЙрд▓ рдкреВрд░реЗ рдврд╛рдВрдЪреЗ рдХреЛ рдмрдирд╛рдПрдЧреА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
TestData data = times(5).deployedAppAndVersion() .times(2).deletedDeployedApp();
рд╣рд╛рдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдерд╛, рд▓реЗрдХрд┐рди, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдк рдерд╛, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рд╕реБрдВрджрд░ред рдпрд╣реА рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЖрдирдВрдж рд▓рд┐рдпрд╛, рдирдИ рддрд░рдХреАрдмреЗрдВ рд╕реАрдЦреАрдВ рдФрд░ рд▓рд╛рдн рдЙрдард╛рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рдореИрдВ рдХрд┐рд╕реА рднреА рд╕рдордп рд╕реНрд░реЛрдд рдбреЗрдЯрд╛ рдХреЗ рдХрд┐рд╕реА рднреА рдмреЗрд╡рдХреВрдл рд╕рдВрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВ, рдФрд░ рдореБрдЭреЗ рдмрд▓ рд╕реЗ рджреЛ рдорд┐рдирдЯ рд▓рдЧреЗрдВрдЧреЗред рдпрджрд┐ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рд╕рдордп рдХрд╛ рд▓рдЧрднрдЧ рдЯреВрдЯрдирд╛:
- рдЕрдиреБрд░реЛрдз рдХрд╛ рдкрд╣рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг рд▓рд┐рдЦрдирд╛: 20 рдорд┐рдирдЯред
- рдкрд╣рд▓реЗ рджреЛ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛: 10 рдорд┐рдирдЯред
- рддреАрд╕рд░рд╛ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛, рд╢рдкрде рд▓реЗрдирд╛, рдЬреЛ рдмрджрд╕реВрд░рдд рдФрд░ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ: 10 рдорд┐рдирдЯред
- рдирдВрдмрд░ 1: 30 рдорд┐рдирдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕рдХреНрд░рд┐рдп рдХрд░рдирд╛ред
- рдкрд░реАрдХреНрд╖рдг 4-8 рд▓рд┐рдЦрдирд╛, рдирдВрдмрд░ 2 рдХреЛ рдлрд┐рд░ рд╕реЗ рджрд┐рдЦрд╛рдирд╛: 10 рдорд┐рдирдЯред
- рдЕрдиреБрд░реЛрдз рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛, рдХреНрдпреЛрдВрдХрд┐ рдЕрдВрдЬреАрд░ рдиреЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рдФрд░ рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рд╕рдлрд▓ рдкреНрд░рдХреНрд╖реЗрдкрдг: 20 рдорд┐рдирдЯред
- рдЕрдзрд┐рдХ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛, рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рднрд░рдирд╛, рдЕрдиреБрд░реЛрдз рдХреЛ рдареАрдХ рдХрд░рдирд╛: 10 рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдП 4 рдмрд╛рд░ред
рд╣рд░ рддреНрд░реБрдЯрд┐ рдХреЗ рд▓рд┐рдП рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рд╣реЛрдиреЗ рдкрд░ рдореБрдЭреЗ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рдЧреЗрдЧрд╛, рдореИрдВрдиреЗ рдлрд┐рд░ рд╕реЗ рдЕрдиреБрд░реЛрдз рдЦреЛрд▓рд╛, рдпрд╛рдж рдХрд┐рдпрд╛ рдХрд┐ рдХрд┐рд╕ рд╕рдирдХреА рдиреЗ рдЗрд╕реЗ рдХреНрд░рдорд╛рджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рдХреНрдпреЛрдВ, рдЗрд╕рдХреА рдорд░рдореНрдордд рдХреА, рдХреЛрдб рднреЗрдЬрд╛, рдФрд░ рдЗрд╕реА рддрд░рд╣, рдореИрдВ рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рд╕реЗ рднреА рдбрд░рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рди рдХреЗрд╡рд▓ рдХреНрд╡реЗрд░реА рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ:
рддреГрддреАрдп-рдкрдХреНрд╖ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рд╕рд╣рднрд╛рдЧрд┐рддрд╛
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреА рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдПрдХ рд╕реЗрд╡рд╛ рдЬреЛ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рдмреБрдЭрддреА рд╣реИ рдФрд░ рдЖрднрд╛рд╕реА рдорд╢реАрдиреЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддреА рд╣реИред рдпрд╣рд╛рдВ рдХрдард┐рдирд╛рдИ рд╕рдореБрджреНрд░ рд╣реИред рдЗрд╕ рддрдереНрдп рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдХрд┐ рдХреЛрдИ рднреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдЦреБрдж рдХреЗ рдЕрдВрджрд░ рдХреНрдпрд╛ рдХрд░ рд░рд╣реА рд╣реИ ("рд╡рд╣ рдереЛрдбрд╝рд╛ рдиреАрдпрди рд╣реИ", рд╣реБрд╣), рдФрд░ рдЗрд╕ рддрдереНрдп рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЙрд╕рдХреА рдПрдкреАрдЖрдИ рдкреВрд░реА рддрд░рд╣
рд╕реЗ рдкрд┐рдЫрд▓реА рд╢рддрд╛рдмреНрджреА рдореЗрдВ
рдПрдХ рдЬрдЧрд╣ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рдереА, рдФрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЙрд╕реЗ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП (рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░): "рдЗрд╕ рддрд░рд╣ 3 рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ, рдФрд░ рдЬрдм рдЖрдк рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реЛрдВ рддреЛ рдпрд╣реАрдВ рджрд╕реНрддрдХ рджреЗрдВ", рдЖрдкрдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рджреЗрдирд╛ рд╣реЛрдЧрд╛, рдлрд┐рд░ рд╕реНрдЯреЗрдЯрд╕ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд░ рд╕рдордп, рдЗрддреНрдпрд╛рджрд┐ред рдЙрд╕реА рд╕рдордп, рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЕрдкрдиреА рдорд╢реАрди рдкрд░ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдмрд╣реБрдд рдмрд╛рд░ рдЪрд▓рд╛рддрд╛ рд╣реИ, рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЬреЛ рдЯреАрдо рд╣реИ рд╡рд╣ рднреМрдЧреЛрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЫрд┐рддрд░реА рд╣реБрдИ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рд░ рд╕рдордп рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣реИред рдпрд╣рд╛рдВ рд╣рдо рдХрдИ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдЯреВрдЯрдиреЗ рдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд░рдЦрддреЗ рд╣реИрдВред рдпреВрдирд┐рдЯ, рдПрдХреАрдХрд░рдг, рд╕реНрд╡реАрдХреГрддрд┐ рдкрд░реАрдХреНрд╖рдг рдЖрдорддреМрд░ рдкрд░ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рд╣реЛрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП, рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдПрдХреАрдХрд░рдг рд╕рдореВрд╣ рдереЛрдбрд╝рд╛ рд╕рдордЭ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред рдХреНрдпрд╛ рдХреНрд╡реЗрд░реА рдкрд░реАрдХреНрд╖рдг рдкрд┐рдЫрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдПрдХ рдЗрдХрд╛рдИ рдпрд╛ рдПрдХреАрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИрдВ? рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рд╕рдореВрд╣ рд╕рдВрдЦреНрдпрд╛ рдПрдХ рдореЗрдВ рд╡реЗ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЕрдкрдиреЗ рд▓реИрдкрдЯреЙрдк рдкрд░ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╕рдореВрд╣ 2 рдореЗрдВ рд╡реЗ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдЕрдВрджрд░ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЬрд┐рдирдореЗрдВ рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдЕрд╡рд╕рдВрд░рдЪрдирд╛)ред рд╕рдореВрд╣ рд╕рдВрдЦреНрдпрд╛ 3 рднреА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдж рдореЗрдВред рд╣рдо рдЦреБрдж рд╕реЗ рд╕рд╡рд╛рд▓ рдкреВрдЫрддреЗ рд╣реИрдВ - рдХреНрдпрд╛, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдХрд┐рди рдорд╛рдорд▓реЛрдВ рдореЗрдВ? рд╣рдо рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреА рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдпрд╣ рдвреЛрдВрдЧ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪрд╛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдХрд░реЗрдЧрд╛ рдЬреЛ рд╣рдо рдЗрд╕реЗ рдмрддрд╛рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рд╣реИ рдЬреЛ рдЬрд╛рд╡рд╛ рдХреЛрдб рдореЗрдВ HTTP рдПрдкреАрдЖрдИ рдХреЛ рд▓рдкреЗрдЯрддрд╛ рд╣реИред рд╣рдо рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХрдИ рд╕рд░рд▓ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рддрд░реНрдХ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╡рд╣рд╛рдВ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рд╕рд╛рде рд╣реА, рджреВрд╕рд░реЗ рд╕рдореВрд╣ рдореЗрдВ рд╕рд┐рд░реНрдл рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг, рдЬреЛ рдХреЗрд╡рд▓ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдЕрдВрджрд░ рдЪрд▓рддреЗ рд╣реИрдВ, рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рд╡рд░реНрдЪреБрдЕрд▓ рдХрдиреЗрдХреНрдЯрд░ рдЕрднреА рднреА рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЛ рдХрдиреЗрдХреНрдЯ, рд╢реБрд░реВ рдФрд░ рдорд╛рд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЕрдкрдиреА рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЗ рддрд░реНрдХ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рд░реЛрдЪрдХ рдФрд░ рдЙрдкрдпреЛрдЧреА рд╣реИред рдпрд╣рд╛рдБ рд╕реНрдЯрдмреНрд╕ рд╣рдорд╛рд░реА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрддреЗ рд╣реИрдВред рдлрд╛рдЙрд▓рд░,
рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╣рдорд╛рд░рд╛ рд╕рдм рдХреБрдЫ рд╣реИред
рдЕрдм, рд╡рд╕рдВрдд рдХреЗ рдЬрд╛рджреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рд╣рдо рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЖрднрд╛рд╕реА рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдорд╛рд░реЗ рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рд╣рдо рдпрд╣ рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рдФрд░ рдЬрдм рдпрд╣ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╣рдорд╛рд░рд╛ рдЖрд╡реЗрджрди рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред
public void testDeploymentStarted() { Deployment deployment = DeploymentMother.makeNewDeployment(); deploymentManager.startDeployment(deployment); assertDeploymentGoesThroughStatuses(NEW, STARTING, CONFIGURING, RUNNING); }
рдЗрд╕реЗ рдФрд░ рднреА рджрд┐рд▓рдЪрд╕реНрдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╣рдорд╛рд░реЗ рд╕реНрдЯрдм рдореЗрдВ
рдХреИрдУрд╕ рдмрдВрджрд░ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
public class VirtualInfrastructureManagerStubWithChaosMonkey implements VirtualInfrastructureManager { private ChaosMonkey monkey; public VirtualMachineState createVm(VirtualMachineDescription vmDescription) { monkey.rollTheDice(); vms.add(makeVm(vmDescription)); } ... private class ChaosMonkey { public void rollTheDice() { if (iAmEvil()) throw new VirtualInfrastructureException("Ha-ha!"); return; } } }
рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЕрдЧрд░ рдмрдВрджрд░ рд╕реЗ рддреНрд░реБрдЯрд┐ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдкреВрдЫреА рдЬрд╛ рд╕рдХрддреА рд╣реИ рддреЛ рдЖрдк рдХрд┐рддрдиреА рджрд┐рд▓рдЪрд╕реНрдк рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдБ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╛ рдЕрдЧрд░ рд╡рд╣ рд╕рдордп-рд╕рдордп рдкрд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХрд╛рдиреВрди рджреНрд╡рд╛рд░рд╛ рд╣рдорд╛рд░реА рдЖрднрд╛рд╕реА рдорд╢реАрдиреЛрдВ рдХреЛ "рдорд╛рд░рддрд╛ рд╣реИ"?
public void testRunningDeploymentRecovers() { Deployment deployment = startDeploymentAndAssertRunning(); ((VirtualInfrastructureManagerStubWithChaosMonkey)virtualInfrastructureManager) .getChaosMonkey().killVms(1); assertDeploymentGoesThroughStatuses(BROKEN, RECOVERING, RUNNING); }
рдФрд░ рд╣рдореЗрдВ рдпрд╣ рд╕рдм рдордЬрд╝рд╛ рд╕реАрдзреЗ рд╣рдорд╛рд░реА рдорд╢реАрди рдкрд░ рдорд┐рд▓рддрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдВрдЪ рдорд┐рдирдЯ рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд┐рдП рдмрд┐рдирд╛, рдПрдХ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рд╡реАрдкреАрдПрди рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ред
рд▓рдШреБ рд╡рд┐рд╖рдпрд╛рдВрддрд░: рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг
рдореИрдВ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╣реВрдВ - рдпрджрд┐ рдЖрдкрдХреА рдЯреАрдо рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╡реНрдпрдХреНрддрд┐ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг рд╕рд░реНрд╡рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдХреЛрдб рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдЬрд┐рддрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрди рд╕рднреА рд╕реНрдорд╛рд░реНрдЯ рдФрд░ рд╕реБрдВрджрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ рдЕрдЧрд░ рд╡реЗ рдирд╣реАрдВ рдЪрд▓реЗрдВрдЧреЗ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкрдХрдбрд╝ рд▓реЗрдВрдЧреЗ? рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рддреАрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдереАрдВред рдкрд╣рд▓рд╛, рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣рд░ рдмрд╛рд░ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдкреБрд╢ рдкреБрд╢ рдХрд░рддрд╛ рд╣реИ, рдкрд╣рд▓реЗ рд╕рдореВрд╣ рдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдкреАрдЫрд╛ рдХрд░рддрд╛ рд╣реИред рдЯреАрдо рдореЗрдВ рдПрдХ рдирд┐рдпрдо рдерд╛ - рдпрджрд┐ рдЖрдкрдиреЗ рдПрдХ рдзрдХреНрдХрд╛ рджрд┐рдпрд╛, рддреЛ рдЖрдк рдШрд░ рдирд╣реАрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдкрд╣рд▓рд╛ рдирд┐рд░реНрдорд╛рдг рд╕рдлрд▓ рди рд╣реЛ (рд▓рдЧрднрдЧ 20 рдорд┐рдирдЯ)ред рдХреБрдЫ рдХрд╛рд░реНрдпрд╛рд▓рдпреЛрдВ рдореЗрдВ, рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЛ рддреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рд╡реНрдпрдХреНрддрд┐ рдХреА рдореЗрдЬ рдкрд░ рдПрдХ рдЖрд▓реАрд╢рд╛рди рдХреЙрдХрд░реЛрдЪ рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдХреБрдЫ рдореЗрдВ рдпрд╣ рд╢рд┐рд▓рд╛рд▓реЗрдЦ рдХреЗ рд╕рд╛рде рдПрдХ рдЖрдпрд╛рдорд╣реАрди рдкреАрд▓реЗ рд░рдВрдЧ рдХреА рдЯреА-рд╢рд░реНрдЯ рдкрд╣рдирдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдерд╛ "рдореБрдЭреЗ рд▓рд╛рдд рдорд╛рд░реЛ, рдореИрдВрдиреЗ рдирд┐рд░реНрдорд╛рдг рддреЛрдбрд╝ рджрд┐рдпрд╛", рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рд░рд▓ рдерд╛: рдЗрд╕реЗ рддреЛрдбрд╝ рджрд┐рдпрд╛ - рдЗрд╕реЗ рдареАрдХ рдХрд░реЗрдВред рдпрджрд┐ рдкрд╣рд▓реА рдЕрд╕реЗрдВрдмрд▓реА рд╕рдлрд▓ рд░рд╣реА, рддреЛ рджреВрд╕рд░рд╛ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЬрд┐рд╕рдиреЗ рджреВрд╕рд░реЗ рд╕рдореВрд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдП - рдЬрд┐рд╕рдиреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ред рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛рдлреА рд▓рдВрдмреА рдереА (рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ)ред рдпрджрд┐ рдпрд╣ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛, рддреЛ рддреАрд╕рд░реА рдЕрд╕реЗрдВрдмрд▓реА рдЪрд╛рд▓реВ рдХреА рдЧрдИ рдереА, рдЬрд┐рд╕реЗ рдПрдХрддреНрд░ рдХрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рдкрд░реАрдХреНрд╖рдг рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдкрд░реАрдХреНрд╖рдг рд╕рдлрд▓ рд░рд╣рд╛, рдмрд╕ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдПред рдпрд╣ рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдерд╛ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдкрдХрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред рд╕рднреА рддреАрди рд╡рд┐рдзрд╛рдирд╕рднрд╛рдУрдВ рдХреЗ рдмрд╛рдж, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд░реНрд╡рд░ рдерд╛ рдЬрд┐рд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреА рдЧрд╛рд░рдВрдЯреА рдереА, рдФрд░ рд╣рдо рдЗрд╕реЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рдереЗред
рдкреВрд░реЗ рдЖрд╡реЗрджрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг
рдпрд╣ рд╕рдм, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдЕрджреНрднреБрдд рд╣реИ, рд▓реЗрдХрд┐рди рд╢рд╛рдВрддрд┐ рд╕реЗ рд╕реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░рд╛ рдЖрд╡реЗрджрди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рди рдХрд┐ рдХреЗрд╡рд▓ рдЗрд╕рдХреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЯреБрдХрдбрд╝реЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдореЙрдбреНрдпреВрд▓ рдФрд░ рдЙрдирдХреЗ рд╕рдВрдпреЛрдЬрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╡рд░ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдХрд╛рдо рдХреЗ рд╣рд░ рдкрд╣рд▓реВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддрд╛рдХрд┐ рдПрдХ рд╣реА рдХрд╛рдо рдХреЛ рджреЛ рдмрд╛рд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝реЗред рдпрд╣рд╛рдВ рдЖрдкрдХреЗ рдЙрддреНрдкрд╛рдж рдХреЗ рд▓рд┐рдП рддрдХрдиреАрдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдУрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд╣рд╛рдирд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╣рд╛рдиреА) рдкрдврд╝реА рдЧрдИ: "рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдорд╛рд╕реНрдЯрд░-рд╕реНрд▓реЗрд╡ рдкреНрд░рддрд┐рдХреГрддрд┐ рдореЛрдб рдореЗрдВ MySQL рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред" рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓реЛрдбрд┐рдВрдЧ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдРрд╕реЗ рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ рдЬреЛ рдЙрди рд╕реВрдЪрдирд╛рдУрдВ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЛ рднреЗрдЬрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХреЛрдб рд╣реА, рдЬреЛ рдПрдХ рдЖрднрд╛рд╕реА рдорд╢реАрди рдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдЧрд╛, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░, рджреВрд╕рд░реА рдмрд╛рдд, рджреВрд╕рд░реА рднрд╛рд╖рд╛ рдореЗрдВред рд╣рдо рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ? рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрд╡рдХ рдХрд╣рд╛рдиреА рдХреЗ рд╡рд░реНрдгрди рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВред рдпрд╣ рдХрд╣рддрд╛ рд╣реИ "рдореЗрд░реЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рд╕реНрдЯрд░-рджрд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ" - рдХреГрдкрдпрд╛ред рд╣рдо рджреЛ JSP рдкреГрд╖реНрдареЛрдВ рд╕реЗ рдорд┐рд▓рдХрд░ рдПрдХ рдЖрджрд┐рдо рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВред рдПрдХ рдкреГрд╖реНрда рдкрд░, рд╣рдо рдорд╛рд╕реНрдЯрд░ рдХреЛ рдПрдХ JDBCConnection рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рджреВрд╕рд░реЗ рдкреГрд╖реНрда рдкрд░, рдЧреБрд▓рд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ JDBCConnection рдмрдирд╛рдПрдБ, рдФрд░ рдкрдврд╝реЗрдВред рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдордп 10 рдорд┐рдирдЯ рд╣реИред рд╣рдорд╛рд░рд╛ рдкрд░реАрдХреНрд╖рдг рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╣рдорд╛рд░реЗ рдЙрддреНрдкрд╛рдж рдореЗрдВ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рдореЛрдб рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдкрд╣рд▓реЗ рдкреГрд╖реНрда рдХреЛ HTTP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдФрд░ рдлрд┐рд░ рджреВрд╕рд░реЗ рддрдХ рдкрд╣реБрдБрдЪрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рдкрд╛рда рджреВрд╕рд░реЗ рдкреГрд╖реНрда рдкрд░ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ - рд╕рдм рдХреБрдЫ рдХреНрд░рдо рдореЗрдВ рд╣реИред рдпрджрд┐ рдЖрдк рд░рдЪрдирд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдЖрддреЗ рд╣реИрдВ, рддреЛ рдРрд╕реЗ рдкреВрд░реНрдг рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдмрд╣реБрдд рдХрдо рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд▓реЗрдХрд┐рди рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЬрдм рд╣рдо рдЖрднрд╛рд╕реА рдорд╢реАрдиреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдореЛрдВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдЖрджреЗрд╢ рджреЗ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдпрд╣ рдХрд┐рддрдиреА рдмрдбрд╝реА рдорджрдж рд╣реИ!
рд╡реЗрдм рдпреВрдЖрдИ рдкрд░реАрдХреНрд╖рдг
рдпрд╣ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╡рд┐рд╖рдп рд╣реИ, рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдЗрд╕рдХреЗ рдиреБрдХрд╕рд╛рди рдХреЗ рд╕рд╛рдеред рдореИрдВ рдЕрдм рдЗрд╕рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╡рд░реНрдгрд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдлреНрд▓реЗрдХреНрд╕ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕реЗ рдЙрдирдХреЗ рдХреЙрдХрд░реЛрдЪ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдиреНрдп рд╕рдореВрд╣ рдиреЗ рд╕рдВрднрд╛рд▓рд╛ рдерд╛ред рдореИрдВрдиреЗ рд╡рд┐рд░реЛрдз рдХрд┐рдпрд╛, рд╕рд╛рдЬрд╝рд┐рд╢ рдХреА, рдореИрдВрдиреЗ рдЬреЛ рдХрд┐рдпрд╛ рд╡рд╣ рдХрд░ рд╕рдХрддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХреБрдЫ рдирд╣реАрдВ рдмрджрд▓рд╛ред рдореИрдВ рдЦреБрдж рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдбреЗрдврд╝ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рд╡реЗрдм рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣рд╛ рдерд╛, рдФрд░ рдЕрдм рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрдореГрддрд┐ рд╕реЗ рд╡реЗрдм рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдЕрдЪреНрдЫреЗ рдЙрджрд╛рд╣рд░рдг рджреЗрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ред рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд╕реЗрд▓реЗрдирд┐рдпрдо рдЖрдкрдХрд╛ рдмрд╣реБрдд рдмрдбрд╝рд╛ рджреЛрд╕реНрдд рд╣реИред рдЖрдк рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдордиреЗ рдЕрдкрдиреА рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рдХрд┐рдпрд╛? рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ REST рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд▓рд┐рдЦрдирд╛ рдкрдбрд╝рд╛, рдФрд░ рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдиреЗ рдЙрдиреНрд╣реЗрдВ рдмреБрд▓рд╛рдпрд╛ред рд╣рдорд╛рд░реА рд╕рдмрд╕реЗ рдмрдбрд╝реА рдЬреАрдд, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╣рдордиреЗ рдлреНрд▓реЗрдХреНрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЗрди рд╕реЗрд╡рд╛рдУрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдкреВрд░рд╛ рдпрдХреАрди рдерд╛ рдХрд┐ рдЙрддреНрдкрд╛рдж рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛, рдФрд░ рдЕрдЧрд░ рд╡рд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛, рддреЛ рдпрд╣ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕рдорд╕реНрдпрд╛ рдереАред рд╡реИрд╕реЗ, рдЪреВрдВрдХрд┐ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣рдореЗрд╢рд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкреАрдЫреЗ рдкрдбрд╝рд╛ рд╣реИ, рд╣рдордиреЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рд▓рд┐рдЦрд╛ рд╣реИ рдЬреЛ рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рдВрднрд╛рд╡рд┐рдд рдЧреНрд░рд╛рд╣рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЗрддрдирд╛ рдкрд╕рдВрдж рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдПрдХ рд╕рдордп рдореЗрдВ рдЕрдзрд┐рдХрд╛рд░реА рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдлреЗрдВрдХрдиреЗ рдЬрд╛ рд░рд╣реЗ рдереЗред рд▓реЗрдХрд┐рди рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдХрд╣рд╛рдиреА рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдореИрдВрдиреЗ рдЦреБрдж рдХреЛ рдкрд░реАрдХреНрд╖рдг рдкрд░ рдкрд╛рдареНрдпрдкреБрд╕реНрддрдХ рд▓рд┐рдЦрдиреЗ, рдпрд╛ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдпрд╣ рд╕рд╛рдмрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рдХрд┐ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рдПрдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рдмрд┐рд▓реНрдХреБрд▓ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ рдФрд░ рдордЬрд╝реЗрджрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рд▓рд╛рднреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд░рдирд╛)ред рдХреБрдЫ рдирд┐рд╖реНрдХрд░реНрд╖ рдФрд░ рдЕрд╡рд▓реЛрдХрди:
- рдкрд░реАрдХреНрд╖рдг "рдмрд╛рдд рдХрд░" рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдкрд░реАрдХреНрд╖рдг рд╕реНрд╡рдпрдВ рд╕рдВрднрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрджрд┐рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдкрдХреЛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЙрд╕рдХреЗ рдкрд╛рд╕ рд╡рд╛рдкрд╕ рдЖрдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдлрд┐рд░ рд╕реЗ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЙрд╕реЗ рдХреНрдпрд╛ рдЬрд╛рдВрдЪрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдХреЗрд╡рд▓ рдХреЛрдб рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рдирд╣реАрдВ рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдП
- рдЖрдкрдХреА рдЯреАрдо рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдЬрдЯрд┐рд▓ рдЪреАрдЬреЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдБрдЪрд╛ рдмрдирд╛рдирд╛ рдФрд░ рд╕реБрдзрд╛рд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, assertDeploymentGoesThroughStatuses (Dep рддреИрдирд╛рддреАStatus ... allowStatuses) рд╡рд┐рдзрд┐ рдмрд┐рд▓реНрдХреБрд▓ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИред рд╣реЛрдорд╡рд░реНрдХ рдЫрджреНрдо рдХреЛрдб рдкрд░ рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рд╡рд┐рдзрд┐ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЖрд╡реЗрджрди рдмрд╣реБрд╕реНрддрд░реАрдп рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдХреЛ рдПрдХ рдЕрд▓рдЧ рдереНрд░реЗрдб рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЕрдирд┐рд╢реНрдЪрд┐рдд рдХрд╛рд▓ рддрдХ рд▓реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП :)
- рдХреЗрд╡рд▓ рд╡рд╣реА рдкрд░рдЦреЗрдВ рдЬреЛ рдЖрдкрдХреЛ рдкрд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдмреАрд╕ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╡рд╛рд╕рд┐рдпреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╣рд╛рде рд╣рдЯрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ
- рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдореБрдЭреЗ рд╡рд╣ рд░рд╛рдп рдорд┐рд▓реА рдЬреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЛрдЪрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдФрд░ рдЖрдо рддреМрд░ рдкрд░ рдпреЛрдЬрдирд╛ред рдореИрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд╕реНрддреБред рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреА рдмрд╛рдзрд╛ рдиреНрдпреВрдирддрдо рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдмрд╕ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред рдпрджрд┐ рдХрд▓ рдЖрдкрдХреЛ рдЙрдирдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдкрд░рд┐рд╡рд░реНрддрдиред рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдм рдХреБрдЫ рдХреЗ рд▓рд┐рдП рд╣реИред
- рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдХреЛрдИ рднреА рдЯреБрдХрдбрд╝рд╛ рдЬреЛ рджреЛ рдмрд╛рд░ рд╣реЛрддрд╛ рд╣реИ - рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рдзрд┐ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, TestUtils рдореЗрдВ)ред рдпрд╣ рдЖрдкрдХреЗ рд╕реНрдЯрд╛рдл рд╕рджрд╕реНрдп рджреНрд╡рд╛рд░рд╛ рдЖрдкрдХреЗ рдЕрдЧрд▓реЗ рдкрд░реАрдХреНрд╖рдг рдХреЛ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдмрд╛рдзрд╛ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред
- рдкрд░реАрдХреНрд╖рдг рдХреЗ рдХрд┐рд╕реА рднреА рдЯреБрдХрдбрд╝реЗ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓реЗрдВ рдЬреЛ рдХрд┐ рдмрд╣реБрдд рд╕рд╛рдорд╛рдиреНрдп рджрд┐рдЦрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, AsUrequals (2, рддреИрдирд╛рддреА) size ()) TestUtils рдореЗрдВ (assertSize (рдЕрдкреЗрдХреНрд╖рд┐рдд, рд╕рдВрдЧреНрд░рд╣))ред рдХреЛрдб рдХреЛ рдпрд╣ рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╡рд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИред
- рдпрджрд┐ рдХреЛрдб рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рддреЛ рдпрд╣ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд░реВрдк рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдкрд╣рд▓реЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдФрд░ рдлрд┐рд░ рдХреЛрдб рдЬреЛ рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХреЛрд╢рд┐рд╢ рдХрд░реЛ, рдЖрдк рдЗрд╕реЗ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗред
- рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рдПрдХ рдЙрдмрд╛рдК рджрд╛рдпрд┐рддреНрд╡ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╕ рд▓реЗрдЦрди рдХреЛрдб рдХреЗ рд▓рд┐рдП рд╕рд╣реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЙрдмрд╛рдК рджрд┐рдирдЪрд░реНрдпрд╛ рдХреЗ рдмрдЬрд╛рдп рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдк рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред