コード例 #1
0
        /// <exception cref="Org.Apache.Hadoop.Yarn.Exceptions.YarnException"/>
        /// <exception cref="System.IO.IOException"/>
        public override ContainerStatus GetContainerStatus(ContainerId containerId, NodeId
                                                           nodeId)
        {
            ContainerManagementProtocolProxy.ContainerManagementProtocolProxyData proxy = null;
            IList <ContainerId> containerIds = new AList <ContainerId>();

            containerIds.AddItem(containerId);
            try
            {
                proxy = cmProxy.GetProxy(nodeId.ToString(), containerId);
                GetContainerStatusesResponse response = proxy.GetContainerManagementProtocol().GetContainerStatuses
                                                            (GetContainerStatusesRequest.NewInstance(containerIds));
                if (response.GetFailedRequests() != null && response.GetFailedRequests().Contains
                        (containerId))
                {
                    Exception t = response.GetFailedRequests()[containerId].DeSerialize();
                    ParseAndThrowException(t);
                }
                ContainerStatus containerStatus = response.GetContainerStatuses()[0];
                return(containerStatus);
            }
            finally
            {
                if (proxy != null)
                {
                    cmProxy.MayBeCloseProxy(proxy);
                }
            }
        }
コード例 #2
0
        public virtual void TestContainerManagerInitialization()
        {
            containerManager.Start();
            IPAddress localAddr = Sharpen.Runtime.GetLocalHost();
            string    fqdn      = localAddr.ToString();

            if (!localAddr.GetHostAddress().Equals(fqdn))
            {
                // only check if fqdn is not same as ip
                // api returns ip in case of resolution failure
                NUnit.Framework.Assert.AreEqual(fqdn, context.GetNodeId().GetHost());
            }
            // Just do a query for a non-existing container.
            bool throwsException = false;

            try
            {
                IList <ContainerId> containerIds = new AList <ContainerId>();
                ContainerId         id           = CreateContainerId(0);
                containerIds.AddItem(id);
                GetContainerStatusesRequest request = GetContainerStatusesRequest.NewInstance(containerIds
                                                                                              );
                GetContainerStatusesResponse response = containerManager.GetContainerStatuses(request
                                                                                              );
                if (response.GetFailedRequests().Contains(id))
                {
                    throw response.GetFailedRequests()[id].DeSerialize();
                }
            }
            catch
            {
                throwsException = true;
            }
            NUnit.Framework.Assert.IsTrue(throwsException);
        }
コード例 #3
0
        /// <exception cref="System.Exception"/>
        private void GetContainerStatus(YarnRPC rpc, Token nmToken, ContainerId containerId
                                        , ApplicationAttemptId appAttemptId, NodeId nodeId, bool isExceptionExpected)
        {
            IList <ContainerId> containerIds = new AList <ContainerId>();

            containerIds.AddItem(containerId);
            GetContainerStatusesRequest request = GetContainerStatusesRequest.NewInstance(containerIds
                                                                                          );
            ContainerManagementProtocol proxy = null;

            try
            {
                proxy = GetContainerManagementProtocolProxy(rpc, nmToken, nodeId, appAttemptId.ToString
                                                                ());
                GetContainerStatusesResponse statuses = proxy.GetContainerStatuses(request);
                if (statuses.GetFailedRequests() != null && statuses.GetFailedRequests().Contains
                        (containerId))
                {
                    ParseAndThrowException(statuses.GetFailedRequests()[containerId].DeSerialize());
                }
            }
            finally
            {
                if (proxy != null)
                {
                    rpc.StopProxy(proxy, conf);
                }
            }
        }
コード例 #4
0
        public virtual void TestMultipleContainersStopAndGetStatus()
        {
            containerManager.Start();
            IList <StartContainerRequest> startRequest           = new AList <StartContainerRequest>();
            ContainerLaunchContext        containerLaunchContext = recordFactory.NewRecordInstance <ContainerLaunchContext
                                                                                                    >();
            IList <ContainerId> containerIds = new AList <ContainerId>();

            for (int i = 0; i < 10; i++)
            {
                ContainerId cId  = CreateContainerId(i);
                string      user = null;
                if ((i & 1) == 0)
                {
                    // container with even id fail
                    user = "******";
                }
                else
                {
                    user = "******";
                }
                Token containerToken = CreateContainerToken(cId, DummyRmIdentifier, context.GetNodeId
                                                                (), user, context.GetContainerTokenSecretManager());
                StartContainerRequest request = StartContainerRequest.NewInstance(containerLaunchContext
                                                                                  , containerToken);
                startRequest.AddItem(request);
                containerIds.AddItem(cId);
            }
            // start containers
            StartContainersRequest requestList = StartContainersRequest.NewInstance(startRequest
                                                                                    );

            containerManager.StartContainers(requestList);
            // Get container statuses
            GetContainerStatusesRequest statusRequest = GetContainerStatusesRequest.NewInstance
                                                            (containerIds);
            GetContainerStatusesResponse statusResponse = containerManager.GetContainerStatuses
                                                              (statusRequest);

            NUnit.Framework.Assert.AreEqual(5, statusResponse.GetContainerStatuses().Count);
            foreach (ContainerStatus status in statusResponse.GetContainerStatuses())
            {
                // Containers with odd id should succeed
                NUnit.Framework.Assert.AreEqual(1, status.GetContainerId().GetContainerId() & 1);
            }
            NUnit.Framework.Assert.AreEqual(5, statusResponse.GetFailedRequests().Count);
            foreach (KeyValuePair <ContainerId, SerializedException> entry in statusResponse.GetFailedRequests
                         ())
            {
                // Containers with even id should fail.
                NUnit.Framework.Assert.AreEqual(0, entry.Key.GetContainerId() & 1);
                NUnit.Framework.Assert.IsTrue(entry.Value.GetMessage().Contains("Reject this container"
                                                                                ));
            }
            // stop containers
            StopContainersRequest stopRequest = StopContainersRequest.NewInstance(containerIds
                                                                                  );
            StopContainersResponse stopResponse = containerManager.StopContainers(stopRequest
                                                                                  );

            NUnit.Framework.Assert.AreEqual(5, stopResponse.GetSuccessfullyStoppedContainers(
                                                ).Count);
            foreach (ContainerId id in stopResponse.GetSuccessfullyStoppedContainers())
            {
                // Containers with odd id should succeed.
                NUnit.Framework.Assert.AreEqual(1, id.GetContainerId() & 1);
            }
            NUnit.Framework.Assert.AreEqual(5, stopResponse.GetFailedRequests().Count);
            foreach (KeyValuePair <ContainerId, SerializedException> entry_1 in stopResponse.GetFailedRequests
                         ())
            {
                // Containers with even id should fail.
                NUnit.Framework.Assert.AreEqual(0, entry_1.Key.GetContainerId() & 1);
                NUnit.Framework.Assert.IsTrue(entry_1.Value.GetMessage().Contains("Reject this container"
                                                                                  ));
            }
        }