WordPress custom posttype meta values doesnot save

You forgot to declare global $post

//Create Meta box
function astest_add_metabox() {
    add_meta_box("astestimonial_metaboxes", "AS-Testimonial Client Information",    "astestimonial_meta_box", "astestimonial", "side", "low");
}
add_action('add_meta_boxes','astest_add_metabox');

//html code
function astestimonial_meta_box() {
    global $post;
    wp_nonce_field('astest_meta_box','astest_meta_box_nonce');
    $clientname = get_post_meta($post->ID,'clientname_value',true);
    echo'<label for="client_name_val">';
    _e('Name: ', 'astestimonial_textdomain');
    echo'</label>';
    echo'<input type="text" id="clientname_value" name="clientname_value"   value="'.esc_attr($clientname).'" />';
}

//save post
function as_testi_save_data($post_id){
    if(isset($_POST['post_type']) && ($_POST['post_type'] == "astestimonial"))  {
            $cli_name_data = $_POST['clientname_value'];
            update_post_meta($post_id, 'clientname_value', $cli_name_data);
    }
}

add_action("save_post", "as_testi_save_data");