Hai Cheng

37 papers A* 1B 1C 1Journal 23Unranked 11
YearRankTypeTitle / Venue / Authors
2026 J jnl
Comput. Speech Lang.
Defu Lan, Hai Cheng
2025 J jnl
Neurocomputing
Siyu Guan, Chunguang Huang, Hai Cheng
2024 J jnl
Comput. Commun.
Yihao Hu, Chunguang Huang, Hai Cheng
2024 J jnl
CoRR
Michele Polese, Leonardo Bonati, Salvatore D'Oro, Pedram Johari, Davide Villa, Sakthivel Velumani, Rajeev Gangula, Maria Tsampazi, Clifton Paul Robinson, Gabriele Gemmi, Andrea Lacava, Stefano Maxenti, Hai Cheng, Tommaso Melodia
2024 J jnl
IEEE Open J. Commun. Soc.
Michele Polese, Leonardo Bonati, Salvatore D'Oro, Pedram Johari, Davide Villa, Sakthivel Velumani, Rajeev Gangula, Maria Tsampazi, Clifton Paul Robinson, Gabriele Gemmi, Andrea Lacava, Stefano Maxenti, Hai Cheng, Tommaso Melodia
2024 J jnl
Vis. Comput.
Yuyao Zhao, Hang Zhou, Hai Cheng, Chunguang Huang
2024 conf
VTC Spring
Abhimanyu Venkatraman Sheshashayee, Matteo Bordin, Pietro Brach del Prever, Davide Villa, Hai Cheng, Chiara Petrioli, Tommaso Melodia, Stefano Basagni
2024 A* conf
MobiCom
Hai Cheng, Salvatore D'Oro, Rajeev Gangula, Sakthivel Velumani, Davide Villa, Leonardo Bonati, Michele Polese, Tommaso Melodia, Gabriel E. Arrobo, Christian Maciocco
2024 J jnl
CoRR
Hai Cheng, Salvatore D'Oro, Rajeev Gangula, Sakthivel Velumani, Davide Villa, Leonardo Bonati, Michele Polese, Gabriel E. Arrobo, Christian Maciocco, Tommaso Melodia
2024 conf
WONS
Hai Cheng, Pedram Johari, Mohamed Amine Arfaoui, Francois Periard, Philip Pietraski, Guodong Zhang, Tommaso Melodia
2023 conf
WiNTECH
Andrea Pinto, Andrew Ashdown, Tanzil Bin Hassan, Hai Cheng, Flavio Esposito, Leonardo Bonati, Salvatore D'Oro, Tommaso Melodia, Francesco Restuccia
2023 J jnl
Comput. Stand. Interfaces
Xiaotong Wang, Chunguang Huang, Hai Cheng
2023 conf
CNML
Rongrui Chen, Hai Cheng
2023 J jnl
J. Ambient Intell. Humaniz. Comput.
Luyao Wang, Chunguang Huang, Hai Cheng
2022 J jnl
Comput. Networks
Bahar Azari, Hai Cheng, Nasim Soltani, Haoqing Li, Yanyu Li, Mauro Belgiovine, Tales Imbiriba, Salvatore D'Oro, Tommaso Melodia, Yanzhi Wang, Pau Closas, Kaushik R. Chowdhury, Deniz Erdogmus
2022 J jnl
IEEE Internet Things Mag.
Nasim Soltani, Hai Cheng, Mauro Belgiovine, Yanyu Li, Haoqing Li, Bahar Azari, Salvatore D'Oro, Tales Imbiriba, Tommaso Melodia, Pau Closas, Yanzhi Wang, Deniz Erdogmus, Kaushik R. Chowdhury
2022 J jnl
CoRR
Nasim Soltani, Hai Cheng, Mauro Belgiovine, Yanyu Li, Haoqing Li, Bahar Azari, Salvatore D'Oro, Tales Imbiriba, Tommaso Melodia, Pau Closas, Yanzhi Wang, Deniz Erdogmus, Kaushik R. Chowdhury
2022 J jnl
IEEE Commun. Mag.
Salvatore D'Oro, Michele Polese, Leonardo Bonati, Hai Cheng, Tommaso Melodia
2022 J jnl
CoRR
Salvatore D'Oro, Michele Polese, Leonardo Bonati, Hai Cheng, Tommaso Melodia
2021 J jnl
IEEE Open J. Commun. Soc.
Hai Cheng, Lorenzo Bertizzolo, Salvatore D'Oro, John Buczek, Tommaso Melodia, Elizabeth Serena Bentley
2020 conf
EITCE
Jiaxin Wang, Hai Cheng
2019 J jnl
CoRR
Lake Bu, Rashmi S. Agrawal, Hai Cheng, Michel A. Kinsy
2019 J jnl
IEEE Trans. Inf. Theory
Hai Cheng, Xiaojun Yuan, Yihua Tan
2019 J jnl
IEEE Access
Hai Cheng, Xiaojun Yuan, Tao Yang
2019 J jnl
CoRR
Lake Bu, Rashmi S. Agrawal, Hai Cheng, Michel A. Kinsy
2019 J jnl
Entropy
Luyao Wang, Hai Cheng
2018 conf
MWSCAS
Lake Bu, Hai Cheng, Michel A. Kinsy
2018 conf
DFT
Lake Bu, Hai Cheng, Michel A. Kinsy
2018 conf
AsianHOST
Mihailo Isakov, Lake Bu, Hai Cheng, Michel A. Kinsy
2017 B conf
GLOBECOM
Hai Cheng, Xiaojun Yuan, Yihua Tan
2017 J jnl
CoRR
Hai Cheng, Xiaojun Yuan, Yihua Tan
2017 C conf
ICCC
Hai Cheng, Xiaojun Yuan, Tao Yang
2015 conf
RVSP
Hai Cheng, Song Yu, Chunguang Huang, Qun Ding
2015 conf
RVSP
Chunguang Huang, Hai Cheng, Yu Song, Qun Ding
2014 conf
ECC (2)
Hai Cheng, Chunguang Huang, Qun Ding, Shu-Chuan Chu
2014 J jnl
J. Inf. Hiding Multim. Signal Process.
Hai Cheng, Qun Ding, Chunguang Huang, Shuxia Zhai, Lianzhong Fang
2014 J jnl
Int. J. Sens. Networks
Yan-Bin Zheng, Jing Pan, Yu Song, Hai Cheng, Qun Ding
s3-storage/s3_test.py
← Index s3-storage/s3_test.py python
#!/usr/bin/env python3
"""
Simple script to test S3 connectivity and download.
Usage: python s3_test.py
"""

import os
import time
import tempfile
from minio import Minio
from minio.error import S3Error
from dotenv import load_dotenv

# Load environment variables
load_dotenv()

def get_minio_client():
    """Create and return a Minio client using credentials from .env file"""
    endpoint = os.getenv("S3_ENDPOINT")
    access_key = os.getenv("S3_ACCESS_KEY")
    secret_key = os.getenv("S3_SECRET_KEY")
    secure = True 
    
    print(f"Connecting to S3 endpoint: {endpoint} (secure={secure})")
    
    return Minio(
        endpoint=endpoint,
        access_key=access_key,
        secret_key=secret_key,
        secure=secure
    )

def test_connection():
    """Test basic connectivity to S3"""
    try:
        client = get_minio_client()
        
        # Try to list buckets as a basic connectivity test
        buckets = client.list_buckets()
        print(f"Successfully connected to S3. Found {len(buckets)} buckets:")
        for bucket in buckets:
            print(f"  - {bucket.name}")
        
        return client
    except Exception as e:
        print(f"Failed to connect to S3: {e}")
        return None

def test_bucket_access(client, bucket_name):
    """Test access to a specific bucket"""
    try:
        exists = client.bucket_exists(bucket_name)
        if exists:
            print(f"Bucket '{bucket_name}' exists and is accessible")
            
            # List a few objects to verify access
            count = 0
            objects = []
            for obj in client.list_objects(bucket_name, recursive=True):
                print(f"  - {obj.object_name} ({obj.size} bytes)")
                objects.append(obj)
                count += 1
                if count >= 5:
                    break
            
            print(f"Found at least {len(objects)} objects in bucket")
            return objects
        else:
            print(f"Bucket '{bucket_name}' does not exist or is not accessible")
            return []
    except Exception as e:
        print(f"Error accessing bucket '{bucket_name}': {e}")
        return []

def test_download(client, bucket_name, object_name):
    """Test downloading a specific object"""
    try:
        print(f"Attempting to download: {object_name}")
        start_time = time.time()
        
        # Create a temporary file to store the downloaded object
        with tempfile.NamedTemporaryFile(delete=False) as temp_file:
            temp_path = temp_file.name
        
        # Download the object
        client.fget_object(bucket_name, object_name, temp_path)
        
        # Check if the file was downloaded successfully
        file_size = os.path.getsize(temp_path)
        elapsed_time = time.time() - start_time
        
        print(f"Download successful: {file_size} bytes in {elapsed_time:.2f} seconds")
        print(f"Average download speed: {file_size/elapsed_time/1024:.2f} KB/s")
        
        # Clean up
        os.unlink(temp_path)
        return True
    except S3Error as e:
        print(f"S3 Error during download: {e}")
        return False
    except Exception as e:
        print(f"Error downloading object: {e}")
        return False

def main():
    """Main function to run all tests"""
    print("=== S3 Connectivity Test ===")
    
    # Test basic connectivity
    client = test_connection()
    if not client:
        return
    
    # Get bucket name from environment variable
    bucket_name = "redb"
    print(f"\n=== Testing Access to Bucket: {bucket_name} ===")
    objects = test_bucket_access(client, bucket_name)
    
    if objects:
        # Test downloading the first object
        first_object = objects[0].object_name
        print(f"\n=== Testing Download of Object: {first_object} ===")
        test_download(client, bucket_name, first_object)
        
        # If the first one worked, let's try a specific file from the error log
        print(f"\n=== Testing Download of Specific Object ===")
        specific_object = "00/06/00062073114defac39cb7ab9cb99a0b77c535a09a241c60d47ddd0b6431629f1.zip"
        test_download(client, bucket_name, specific_object)

if __name__ == "__main__":
    main()